From 6149482b5d81d67778ab66043926dec885802374 Mon Sep 17 00:00:00 2001 From: Ganendra Afrasya Date: Thu, 28 Nov 2019 12:03:11 +0700 Subject: [PATCH] Add test --- .../UserInterface/TestCaseFooterButtonMods.cs | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 osu.Game.Tests/Visual/UserInterface/TestCaseFooterButtonMods.cs diff --git a/osu.Game.Tests/Visual/UserInterface/TestCaseFooterButtonMods.cs b/osu.Game.Tests/Visual/UserInterface/TestCaseFooterButtonMods.cs new file mode 100644 index 0000000000..0c437800bc --- /dev/null +++ b/osu.Game.Tests/Visual/UserInterface/TestCaseFooterButtonMods.cs @@ -0,0 +1,70 @@ +// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. +// See the LICENCE file in the repository root for full licence text. + +using System; +using System.Collections.Generic; +using NUnit.Framework; +using osu.Game.Graphics.Sprites; +using osu.Game.Rulesets.Mods; +using osu.Game.Rulesets.Osu.Mods; +using osu.Game.Screens.Select; + +namespace osu.Game.Tests.Visual.UserInterface +{ + public class TestCaseFooterButtonMods : OsuTestScene + { + public override IReadOnlyList RequiredTypes => new[] + { + typeof(FooterButtonMods) + }; + + private readonly TestFooterButtonMods footerButtonMods; + + public TestCaseFooterButtonMods() + { + Add(footerButtonMods = new TestFooterButtonMods()); + } + + [Test] + public void TestIncrementMultiplier() + { + AddStep(@"Add Hidden", () => changeMods(new Mod[] { new OsuModHidden() })); + AddAssert(@"Check Hidden multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"1.06x")); + AddStep(@"Add HardRock", () => changeMods(new Mod[] { new OsuModHidden() })); + AddAssert(@"Check HardRock multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"1.06x")); + AddStep(@"Add DoubleTime", () => changeMods(new Mod[] { new OsuModDoubleTime() })); + AddAssert(@"Check DoubleTime multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"1.12x")); + AddStep(@"Add multiple Mods", () => changeMods(new Mod[] { new OsuModDoubleTime(), new OsuModHidden(), new OsuModHidden() })); + AddAssert(@"Check multiple mod multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"1.26x")); + } + + [Test] + public void TestDecrementMultiplier() + { + AddStep(@"Add Easy", () => changeMods(new Mod[] { new OsuModEasy() })); + AddAssert(@"Check Easy multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"0.50x")); + AddStep(@"Add NoFail", () => changeMods(new Mod[] { new OsuModNoFail() })); + AddAssert(@"Check NoFail multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"0.50x")); + AddStep(@"Add Multiple Mods", () => changeMods(new Mod[] { new OsuModEasy(), new OsuModNoFail() })); + AddAssert(@"Check multiple mod multiplier", () => footerButtonMods.MultiplierText.Text.Equals(@"0.25x")); + } + + [Test] + public void TestClearMultiplier() + { + AddStep(@"Add mods", () => changeMods(new Mod[] { new OsuModDoubleTime(), new OsuModFlashlight() })); + AddStep(@"Clear selected mod", () => changeMods(Array.Empty())); + AddAssert(@"Check empty multiplier", () => footerButtonMods.MultiplierText.Text.Equals(string.Empty)); + } + + private void changeMods(IReadOnlyList mods) + { + footerButtonMods.Current.Value = mods; + } + + private class TestFooterButtonMods : FooterButtonMods + { + public new OsuSpriteText MultiplierText => base.MultiplierText; + } + } +}