1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-21 10:32:55 +08:00
osu-lazer/osu.Game.Tests/Visual/UserInterface/TestSceneBreadcrumbControlHeader.cs

89 lines
2.5 KiB
C#
Raw Normal View History

2021-05-21 02:20:18 +08:00
// 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.
2022-06-17 15:37:17 +08:00
#nullable disable
2021-05-21 02:20:18 +08:00
using System.Linq;
using NUnit.Framework;
using osu.Framework.Allocation;
using osu.Framework.Graphics;
using osu.Game.Overlays;
namespace osu.Game.Tests.Visual.UserInterface
{
public class TestSceneBreadcrumbControlHeader : OsuTestScene
{
private static readonly string[] items = { "first", "second", "third", "fourth", "fifth" };
[Cached]
private readonly OverlayColourProvider colourProvider = new OverlayColourProvider(OverlayColourScheme.Red);
private TestHeader header;
[SetUp]
public void SetUp() => Schedule(() =>
{
Child = header = new TestHeader
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
};
});
[Test]
public void TestAddAndRemoveItem()
{
foreach (string item in items.Skip(1))
2021-05-21 02:20:18 +08:00
AddStep($"Add {item} item", () => header.AddItem(item));
foreach (string item in items.Reverse().SkipLast(3))
2021-05-21 02:20:18 +08:00
AddStep($"Remove {item} item", () => header.RemoveItem(item));
2021-05-21 02:47:50 +08:00
AddStep("Clear items", () => header.ClearItems());
2021-05-21 02:20:18 +08:00
foreach (string item in items)
2021-05-21 02:20:18 +08:00
AddStep($"Add {item} item", () => header.AddItem(item));
foreach (string item in items)
2021-05-21 02:20:18 +08:00
AddStep($"Remove {item} item", () => header.RemoveItem(item));
}
private class TestHeader : BreadcrumbControlOverlayHeader
{
public TestHeader()
{
TabControl.AddItem(items[0]);
Current.Value = items[0];
}
public void AddItem(string value)
{
TabControl.AddItem(value);
Current.Value = TabControl.Items.LastOrDefault();
}
public void RemoveItem(string value)
{
TabControl.RemoveItem(value);
Current.Value = TabControl.Items.LastOrDefault();
}
2021-05-21 02:47:50 +08:00
public void ClearItems()
2021-05-21 02:20:18 +08:00
{
TabControl.Clear();
Current.Value = null;
}
protected override OverlayTitle CreateTitle() => new TestTitle();
}
private class TestTitle : OverlayTitle
{
public TestTitle()
{
Title = "Test Title";
}
}
}
}