1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-21 18:42:56 +08:00
osu-lazer/osu.Game.Tests/Visual/Online/TestSceneRankingsOverlay.cs

78 lines
3.1 KiB
C#
Raw Normal View History

2019-11-30 08:01:07 +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
2019-11-30 08:01:07 +08:00
using NUnit.Framework;
using osu.Framework.Bindables;
2021-08-23 18:53:03 +08:00
using osu.Framework.Graphics.Containers;
using osu.Game.Overlays;
using osu.Game.Overlays.Rankings;
2021-08-23 18:53:03 +08:00
using osu.Game.Rulesets.Catch;
using osu.Game.Rulesets.Mania;
using osu.Game.Rulesets.Osu;
2021-08-23 18:53:03 +08:00
using osu.Game.Users;
2019-11-30 08:01:07 +08:00
namespace osu.Game.Tests.Visual.Online
{
2022-11-24 13:32:20 +08:00
public partial class TestSceneRankingsOverlay : OsuTestScene
2019-11-30 08:01:07 +08:00
{
protected override bool UseOnlineAPI => true;
2021-08-23 18:53:03 +08:00
private TestRankingsOverlay rankingsOverlay;
2019-11-30 08:01:07 +08:00
2022-07-18 13:40:34 +08:00
private readonly Bindable<CountryCode> countryBindable = new Bindable<CountryCode>();
private readonly Bindable<RankingsScope> scope = new Bindable<RankingsScope>();
2021-08-23 18:53:03 +08:00
[SetUp]
public void SetUp() => Schedule(loadRankingsOverlay);
2019-11-30 08:01:07 +08:00
[Test]
public void TestParentRulesetDecoupledAfterInitialShow()
2019-11-30 08:01:07 +08:00
{
AddStep("enable global ruleset", () => Ruleset.Disabled = false);
AddStep("set global ruleset to osu!catch", () => Ruleset.Value = new CatchRuleset().RulesetInfo);
2021-08-23 18:53:03 +08:00
AddStep("reload rankings overlay", loadRankingsOverlay);
AddAssert("rankings ruleset set to osu!catch", () => rankingsOverlay.Header.Ruleset.Value.ShortName == CatchRuleset.SHORT_NAME);
AddStep("set global ruleset to osu!", () => Ruleset.Value = new OsuRuleset().RulesetInfo);
AddAssert("rankings ruleset still osu!catch", () => rankingsOverlay.Header.Ruleset.Value.ShortName == CatchRuleset.SHORT_NAME);
AddStep("disable global ruleset", () => Ruleset.Disabled = true);
AddAssert("rankings ruleset still enabled", () => rankingsOverlay.Header.Ruleset.Disabled == false);
AddStep("set rankings ruleset to osu!mania", () => rankingsOverlay.Header.Ruleset.Value = new ManiaRuleset().RulesetInfo);
AddAssert("rankings ruleset set to osu!mania", () => rankingsOverlay.Header.Ruleset.Value.ShortName == ManiaRuleset.SHORT_NAME);
2019-11-30 08:01:07 +08:00
}
[Test]
public void TestFlagScopeDependency()
{
AddStep("Set scope to Score", () => scope.Value = RankingsScope.Score);
AddAssert("Check country is default", () => countryBindable.IsDefault);
2022-07-18 13:40:34 +08:00
AddStep("Set country", () => countryBindable.Value = CountryCode.US);
AddAssert("Check scope is Performance", () => scope.Value == RankingsScope.Performance);
}
2019-11-30 08:01:07 +08:00
[Test]
public void TestShowCountry()
{
2022-07-18 13:40:34 +08:00
AddStep("Show US", () => rankingsOverlay.ShowCountry(CountryCode.US));
2019-11-30 08:01:07 +08:00
}
2021-08-23 18:53:03 +08:00
private void loadRankingsOverlay()
2019-11-30 08:01:07 +08:00
{
2021-08-23 18:53:03 +08:00
Child = rankingsOverlay = new TestRankingsOverlay
{
Country = { BindTarget = countryBindable },
Header = { Current = { BindTarget = scope } },
State = { Value = Visibility.Visible },
};
2019-11-30 08:01:07 +08:00
}
2022-11-24 13:32:20 +08:00
private partial class TestRankingsOverlay : RankingsOverlay
{
2022-07-18 13:40:34 +08:00
public new Bindable<CountryCode> Country => base.Country;
}
2019-11-30 08:01:07 +08:00
}
}