1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-18 22:02:54 +08:00
osu-lazer/osu.Game.Tests/Visual/UserInterface/TestSceneOnScreenDisplay.cs

120 lines
4.6 KiB
C#
Raw Normal View History

// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
2018-04-13 17:19:50 +08:00
2022-06-17 15:37:17 +08:00
#nullable disable
2018-04-13 17:19:50 +08:00
using NUnit.Framework;
using osu.Framework.Allocation;
using osu.Framework.Configuration;
using osu.Framework.Configuration.Tracking;
using osu.Framework.Graphics;
2018-04-13 17:19:50 +08:00
using osu.Game.Overlays;
using osu.Game.Overlays.OSD;
2018-04-13 17:19:50 +08:00
2019-03-25 00:02:36 +08:00
namespace osu.Game.Tests.Visual.UserInterface
2018-04-13 17:19:50 +08:00
{
[TestFixture]
public class TestSceneOnScreenDisplay : OsuTestScene
2018-04-13 17:19:50 +08:00
{
[BackgroundDependencyLoader]
private void load()
{
var config = new TestConfigManager();
var osd = new TestOnScreenDisplay();
osd.BeginTracking(this, config);
Add(osd);
2018-04-13 17:19:50 +08:00
2019-07-11 14:15:34 +08:00
AddStep("Display empty osd toast", () => osd.Display(new EmptyToast()));
2019-08-12 18:09:09 +08:00
AddAssert("Toast width is 240", () => osd.Child.Width == 240);
AddStep("Display toast with lengthy text", () => osd.Display(new LengthyToast()));
AddAssert("Toast width is greater than 240", () => osd.Child.Width > 240);
AddRepeatStep("Change toggle (no bind)", () => config.ToggleSetting(TestConfigSetting.ToggleSettingNoKeyBind), 2);
AddRepeatStep("Change toggle (with bind)", () => config.ToggleSetting(TestConfigSetting.ToggleSettingWithKeyBind), 2);
AddRepeatStep("Change enum (no bind)", () => config.IncrementEnumSetting(TestConfigSetting.EnumSettingNoKeyBind), 3);
AddRepeatStep("Change enum (with bind)", () => config.IncrementEnumSetting(TestConfigSetting.EnumSettingWithKeyBind), 3);
}
private class TestConfigManager : ConfigManager<TestConfigSetting>
2018-04-13 17:19:50 +08:00
{
public TestConfigManager()
{
InitialiseDefaults();
}
protected override void InitialiseDefaults()
{
SetDefault(TestConfigSetting.ToggleSettingNoKeyBind, false);
SetDefault(TestConfigSetting.EnumSettingNoKeyBind, EnumSetting.Setting1);
SetDefault(TestConfigSetting.ToggleSettingWithKeyBind, false);
SetDefault(TestConfigSetting.EnumSettingWithKeyBind, EnumSetting.Setting1);
2018-04-13 17:19:50 +08:00
base.InitialiseDefaults();
}
2018-04-13 17:19:50 +08:00
public void ToggleSetting(TestConfigSetting setting) => SetValue(setting, !Get<bool>(setting));
2018-04-13 17:19:50 +08:00
public void IncrementEnumSetting(TestConfigSetting setting)
{
var nextValue = Get<EnumSetting>(setting) + 1;
if (nextValue > EnumSetting.Setting4)
nextValue = EnumSetting.Setting1;
SetValue(setting, nextValue);
}
2018-04-13 17:19:50 +08:00
public override TrackedSettings CreateTrackedSettings() => new TrackedSettings
{
new TrackedSetting<bool>(TestConfigSetting.ToggleSettingNoKeyBind, b => new SettingDescription(b, "toggle setting with no keybind", b ? "enabled" : "disabled")),
new TrackedSetting<EnumSetting>(TestConfigSetting.EnumSettingNoKeyBind, v => new SettingDescription(v, "enum setting with no keybind", v.ToString())),
new TrackedSetting<bool>(TestConfigSetting.ToggleSettingWithKeyBind, b => new SettingDescription(b, "toggle setting with keybind", b ? "enabled" : "disabled", "fake keybind")),
new TrackedSetting<EnumSetting>(TestConfigSetting.EnumSettingWithKeyBind, v => new SettingDescription(v, "enum setting with keybind", v.ToString(), "fake keybind")),
};
2018-04-13 17:19:50 +08:00
protected override void PerformLoad()
{
}
protected override bool PerformSave() => false;
2018-04-13 17:19:50 +08:00
}
private enum TestConfigSetting
2018-04-13 17:19:50 +08:00
{
ToggleSettingNoKeyBind,
EnumSettingNoKeyBind,
ToggleSettingWithKeyBind,
EnumSettingWithKeyBind
2018-04-13 17:19:50 +08:00
}
private enum EnumSetting
{
Setting1,
Setting2,
Setting3,
Setting4
}
2019-07-11 14:15:34 +08:00
private class EmptyToast : Toast
{
2019-07-12 14:50:53 +08:00
public EmptyToast()
: base("", "", "")
{
}
2019-07-11 14:15:34 +08:00
}
2019-08-12 18:09:09 +08:00
private class LengthyToast : Toast
{
public LengthyToast()
: base("Toast with a very very very long text", "A very very very very very very long text also", "A very very very very very long shortcut")
{
}
}
private class TestOnScreenDisplay : OnScreenDisplay
2018-04-13 17:19:50 +08:00
{
protected override void DisplayTemporarily(Drawable toDisplay) => toDisplay.FadeIn().ResizeHeightTo(110);
2018-04-13 17:19:50 +08:00
}
}
}