diff --git a/osu.Game.Tests/Visual/TestCaseChatDisplay.cs b/osu.Game.Tests/Visual/TestCaseChatDisplay.cs index 3eecc5a8fb..0f5b0a35b3 100644 --- a/osu.Game.Tests/Visual/TestCaseChatDisplay.cs +++ b/osu.Game.Tests/Visual/TestCaseChatDisplay.cs @@ -5,11 +5,9 @@ using System.ComponentModel; using osu.Framework.Graphics.Containers; using osu.Game.Overlays; using osu.Framework.Allocation; -using osu.Game.Graphics; using osu.Game.Online.API; using osu.Game.Users; using osu.Game.Online.Chat; -using osu.Game.Configuration; using osu.Framework.Graphics.UserInterface; using System; @@ -19,22 +17,28 @@ namespace osu.Game.Tests.Visual public class TestCaseChatDisplay : OsuTestCase { - DummyChatOverlay chat; + private readonly DummyChatOverlay chat; public TestCaseChatDisplay() { - chat = new DummyChatOverlay - { - State = Visibility.Visible - }; + chat = new DummyChatOverlay + { + State = Visibility.Visible + }; Add(chat); - + + AddStep("Set Username DummyUser", () => chat.Username = "DummyUser"); + AddStep("Type \"Hello\"", () => chat.PostDummyMessage("Hello")); + AddStep("Set Long Username", () => chat.Username = "Over15LengthUserName"); + AddStep("Type \"Over15LengthUserName\"", () => chat.PostDummyMessage("Over15LengthUserName")); + AddStep("Set Wide Username", () => chat.Username = "WWWWWWWWWWWWWWW"); + AddStep("Type \"Wide!\"", () => chat.PostDummyMessage("Wide!")); } [BackgroundDependencyLoader] - private void load(APIAccess api, OsuConfigManager config, OsuColour colours) + private void load(APIAccess api) { - var channel = new DummyChannel() + var channel = new DummyChannel { Name = "#Dummy", Topic = "Test Chat", @@ -42,12 +46,12 @@ namespace osu.Game.Tests.Visual Id = 0 }; - api.Scheduler.Add(delegate { - channel.AddNewMessage("This message for test from offline."); - channel.AddNewMessage("TestMessage"); - channel.AddNewMessage("!@#$%^&&*()"); - channel.AddNewMessage("testTEST"); - chat.OpenChannel(channel); + api.Scheduler.Add(delegate { + channel.AddNewMessage("This message for test from offline."); + channel.AddNewMessage("TestMessage"); + channel.AddNewMessage("!@#$%^&&*()"); + channel.AddNewMessage("testTEST"); + chat.OpenChannel(channel); }); } @@ -55,25 +59,23 @@ namespace osu.Game.Tests.Visual private class DummyChatOverlay : ChatOverlay { + public string Username = "DummyUser"; + [BackgroundDependencyLoader] - private void load(APIAccess api, OsuConfigManager config, OsuColour colours) + private void load(APIAccess api) { - textbox.OnCommit = postDummyMessage; - base.api = api; + Textbox.OnCommit = postDummyMessage; + Api = api; api.Register(this); } - private void postDummyMessage(TextBox textbox, bool newText) + public void PostDummyMessage(string postText) { - var postText = textbox.Text; - - textbox.Text = string.Empty; - if (string.IsNullOrWhiteSpace(postText)) return; - var target = base.CurrentChannel; + var target = CurrentChannel; if (target == null) return; @@ -109,8 +111,16 @@ namespace osu.Game.Tests.Visual } } - var message = new DummyMessage(postText, "DummyUser", isAction, false, 0); - api.Scheduler.Add(delegate { CurrentChannel.AddNewMessages(message); }); + var message = new DummyMessage(postText, Username, isAction); + Api.Scheduler.Add(delegate { CurrentChannel.AddNewMessages(message); }); + } + + private void postDummyMessage(TextBox textbox, bool newText) + { + var postText = textbox.Text; + + textbox.Text = string.Empty; + PostDummyMessage(postText); } } @@ -122,7 +132,7 @@ namespace osu.Game.Tests.Visual //Should be call "API Thread" public void AddNewMessage(string message) { - base.AddNewMessages(new DummyMessage(message, null, false, false, messageCounter++)); + AddNewMessages(new DummyMessage(message, null, false, false, messageCounter++)); } } @@ -135,9 +145,9 @@ namespace osu.Game.Tests.Visual Content = text; IsAction = isAction; Timestamp = DateTimeOffset.Now; - Sender = new User + Sender = new User { - Username = (username != null)? username : $"User " + number + "", + Username = username ?? $"User {number}", Id = number, Colour = isImportant ? "#250cc9" : null, }; diff --git a/osu.Game/Overlays/ChatOverlay.cs b/osu.Game/Overlays/ChatOverlay.cs index 314546bdad..01d3bc2356 100644 --- a/osu.Game/Overlays/ChatOverlay.cs +++ b/osu.Game/Overlays/ChatOverlay.cs @@ -39,9 +39,9 @@ namespace osu.Game.Overlays private readonly LoadingAnimation loading; - protected readonly FocusedTextBox textbox; + protected readonly FocusedTextBox Textbox; - protected APIAccess api; + protected APIAccess Api; private const int transition_length = 500; @@ -133,7 +133,7 @@ namespace osu.Game.Overlays }, Children = new Drawable[] { - textbox = new FocusedTextBox + Textbox = new FocusedTextBox { RelativeSizeAxes = Axes.Both, Height = 1, @@ -179,12 +179,12 @@ namespace osu.Game.Overlays if (state == Visibility.Visible) { - textbox.HoldFocus = false; + Textbox.HoldFocus = false; if (1f - ChatHeight.Value < channel_selection_min_height) transformChatHeightTo(1f - channel_selection_min_height, 800, Easing.OutQuint); } else - textbox.HoldFocus = true; + Textbox.HoldFocus = true; }; } @@ -246,7 +246,7 @@ namespace osu.Game.Overlays protected override void OnFocus(InputState state) { //this is necessary as textbox is masked away and therefore can't get focus :( - GetContainingInputManager().ChangeFocus(textbox); + GetContainingInputManager().ChangeFocus(Textbox); base.OnFocus(state); } @@ -255,7 +255,7 @@ namespace osu.Game.Overlays this.MoveToY(0, transition_length, Easing.OutQuint); this.FadeIn(transition_length, Easing.OutQuint); - textbox.HoldFocus = true; + Textbox.HoldFocus = true; base.PopIn(); } @@ -264,14 +264,14 @@ namespace osu.Game.Overlays this.MoveToY(Height, transition_length, Easing.InSine); this.FadeOut(transition_length, Easing.InSine); - textbox.HoldFocus = false; + Textbox.HoldFocus = false; base.PopOut(); } [BackgroundDependencyLoader] private void load(APIAccess api, OsuConfigManager config, OsuColour colours) { - this.api = api; + Api = api; api.Register(this); ChatHeight = config.GetBindable(OsuSetting.ChatDisplayHeight); @@ -324,7 +324,7 @@ namespace osu.Game.Overlays messageRequest = Scheduler.AddDelayed(fetchNewMessages, 1000, true); }; - api.Queue(req); + Api.Queue(req); } private Channel currentChannel; @@ -343,14 +343,14 @@ namespace osu.Game.Overlays if (value == null) { currentChannel = null; - textbox.Current.Disabled = true; + Textbox.Current.Disabled = true; currentChannelContainer.Clear(false); return; } currentChannel = value; - textbox.Current.Disabled = currentChannel.ReadOnly; + Textbox.Current.Disabled = currentChannel.ReadOnly; channelTabs.Current.Value = value; var loaded = loadedChannels.Find(d => d.Channel == value); @@ -433,7 +433,7 @@ namespace osu.Game.Overlays Debug.Write("failure!"); }; - api.Queue(req); + Api.Queue(req); } private void fetchNewMessages() @@ -459,7 +459,7 @@ namespace osu.Game.Overlays fetchReq = null; }; - api.Queue(fetchReq); + Api.Queue(fetchReq); } private void postMessage(TextBox textbox, bool newText) @@ -475,7 +475,7 @@ namespace osu.Game.Overlays if (target == null) return; - if (!api.IsLoggedIn) + if (!Api.IsLoggedIn) { target.AddNewMessages(new ErrorMessage("Please login to participate in chat!")); return; @@ -515,7 +515,7 @@ namespace osu.Game.Overlays var message = new LocalEchoMessage { - Sender = api.LocalUser.Value, + Sender = Api.LocalUser.Value, Timestamp = DateTimeOffset.Now, TargetType = TargetType.Channel, //TODO: read this from channel TargetId = target.Id, @@ -529,7 +529,7 @@ namespace osu.Game.Overlays req.Failure += e => target.ReplaceMessage(message, null); req.Success += m => target.ReplaceMessage(message, m); - api.Queue(req); + Api.Queue(req); } private void transformChatHeightTo(double newChatHeight, double duration = 0, Easing easing = Easing.None)