Improve tests, simplify "updateDisplay" method

This commit is contained in:
mk56-spn 2022-12-15 16:12:34 +01:00
parent 9a235b3213
commit 0c177aa7de
3 changed files with 47 additions and 43 deletions

View File

@ -23,7 +23,7 @@ namespace osu.Game.Tests.Visual.Gameplay
{ {
private ScoreProcessor scoreProcessor = null!; private ScoreProcessor scoreProcessor = null!;
private JudgementTally judgementTally = null!; private JudgementTally judgementTally = null!;
private TestJudgementCounterDisplay counter = null!; private TestJudgementCounterDisplay counterDisplay = null!;
private readonly Bindable<JudgementResult> lastJudgementResult = new Bindable<JudgementResult>(); private readonly Bindable<JudgementResult> lastJudgementResult = new Bindable<JudgementResult>();
@ -48,7 +48,7 @@ namespace osu.Game.Tests.Visual.Gameplay
{ {
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
CachedDependencies = new (Type, object)[] { (typeof(JudgementTally), judgementTally) }, CachedDependencies = new (Type, object)[] { (typeof(JudgementTally), judgementTally) },
Child = counter = new TestJudgementCounterDisplay Child = counterDisplay = new TestJudgementCounterDisplay
{ {
Margin = new MarginPadding { Top = 100 }, Margin = new MarginPadding { Top = 100 },
Anchor = Anchor.TopCentre, Anchor = Anchor.TopCentre,
@ -82,7 +82,7 @@ namespace osu.Game.Tests.Visual.Gameplay
AddRepeatStep("Add judgement", () => applyOneJudgement(HitResult.Miss), 2); AddRepeatStep("Add judgement", () => applyOneJudgement(HitResult.Miss), 2);
AddRepeatStep("Add judgement", () => applyOneJudgement(HitResult.Meh), 2); AddRepeatStep("Add judgement", () => applyOneJudgement(HitResult.Meh), 2);
AddRepeatStep("Add judgement", () => applyOneJudgement(HitResult.LargeTickHit), 2); AddRepeatStep("Add judgement", () => applyOneJudgement(HitResult.LargeTickHit), 2);
AddStep("Show all judgements", () => counter.Mode.Value = JudgementCounterDisplay.DisplayMode.All); AddStep("Show all judgements", () => counterDisplay.Mode.Value = JudgementCounterDisplay.DisplayMode.All);
AddAssert("Check value added whilst hidden", () => hiddenCount() == 2); AddAssert("Check value added whilst hidden", () => hiddenCount() == 2);
} }
@ -91,43 +91,49 @@ namespace osu.Game.Tests.Visual.Gameplay
{ {
AddRepeatStep("Add judgement", () => applyOneJudgement(HitResult.LargeTickHit), 2); AddRepeatStep("Add judgement", () => applyOneJudgement(HitResult.LargeTickHit), 2);
AddAssert("Check value added whilst hidden", () => hiddenCount() == 2); AddAssert("Check value added whilst hidden", () => hiddenCount() == 2);
AddStep("Show all judgements", () => counter.Mode.Value = JudgementCounterDisplay.DisplayMode.All); AddStep("Show all judgements", () => counterDisplay.Mode.Value = JudgementCounterDisplay.DisplayMode.All);
} }
[Test] [Test]
public void TestChangeFlowDirection() public void TestChangeFlowDirection()
{ {
AddStep("Set direction vertical", () => counter.FlowDirection.Value = JudgementCounterDisplay.Flow.Vertical); AddStep("Set direction vertical", () => counterDisplay.FlowDirection.Value = JudgementCounterDisplay.Flow.Vertical);
AddStep("Set direction horizontal", () => counter.FlowDirection.Value = JudgementCounterDisplay.Flow.Horizontal); AddStep("Set direction horizontal", () => counterDisplay.FlowDirection.Value = JudgementCounterDisplay.Flow.Horizontal);
} }
[Test] [Test]
public void TestToggleJudgementNames() public void TestToggleJudgementNames()
{ {
AddStep("Hide judgement names", () => counter.ShowName.Value = false); AddStep("Hide judgement names", () => counterDisplay.ShowName.Value = false);
AddAssert("Assert hidden", () => counter.JudgementContainer.Children.OfType<JudgementCounter>().First().ResultName.Alpha == 0); AddAssert("Assert hidden", () => counterDisplay.JudgementContainer.Children.OfType<JudgementCounter>().First().ResultName.Alpha == 0);
AddStep("Hide judgement names", () => counter.ShowName.Value = true); AddStep("Hide judgement names", () => counterDisplay.ShowName.Value = true);
AddAssert("Assert shown", () => counter.JudgementContainer.Children.OfType<JudgementCounter>().First().ResultName.Alpha == 1); AddAssert("Assert shown", () => counterDisplay.JudgementContainer.Children.OfType<JudgementCounter>().First().ResultName.Alpha == 1);
} }
[Test] [Test]
public void TestHideMaxValue() public void TestHideMaxValue()
{ {
AddStep("Hide max judgement", () => counter.ShowMax.Value = false); AddStep("Hide max judgement", () => counterDisplay.ShowMax.Value = false);
AddStep("Show max judgement", () => counter.ShowMax.Value = true); AddWaitStep("wait some", 2);
AddAssert("Check max hidden", () => counterDisplay.JudgementContainer.ChildrenOfType<JudgementCounter>().First().Alpha == 0);
AddStep("Show max judgement", () => counterDisplay.ShowMax.Value = true);
} }
[Test] [Test]
public void TestCycleDisplayModes() public void TestCycleDisplayModes()
{ {
AddStep("Show all judgements", () => counter.Mode.Value = JudgementCounterDisplay.DisplayMode.All); AddStep("Show basic judgements", () => counterDisplay.Mode.Value = JudgementCounterDisplay.DisplayMode.Simple);
AddStep("Show normal judgements", () => counter.Mode.Value = JudgementCounterDisplay.DisplayMode.Normal); AddWaitStep("wait some", 2);
AddStep("Show basic judgements", () => counter.Mode.Value = JudgementCounterDisplay.DisplayMode.Simple); AddAssert("Check only basic", () => counterDisplay.JudgementContainer.ChildrenOfType<JudgementCounter>().Last().Alpha == 0);
AddStep("Show normal judgements", () => counterDisplay.Mode.Value = JudgementCounterDisplay.DisplayMode.Normal);
AddStep("Show all judgements", () => counterDisplay.Mode.Value = JudgementCounterDisplay.DisplayMode.All);
AddWaitStep("wait some", 2);
AddAssert("Check all visible", () => counterDisplay.JudgementContainer.ChildrenOfType<JudgementCounter>().Last().Alpha == 1);
} }
private int hiddenCount() private int hiddenCount()
{ {
var num = counter.JudgementContainer.Children.OfType<JudgementCounter>().First(child => child.Result.Type == HitResult.LargeTickHit); var num = counterDisplay.JudgementContainer.Children.OfType<JudgementCounter>().First(child => child.Result.Type == HitResult.LargeTickHit);
return num.Result.ResultCount.Value; return num.Result.ResultCount.Value;
} }

View File

@ -100,7 +100,7 @@ namespace osu.Game.Screens.Play.HUD.JudgementCounter
protected override void PopIn() protected override void PopIn()
{ {
this.FadeInFromZero(500, Easing.OutQuint); this.FadeIn(500, Easing.OutQuint);
} }
protected override void PopOut() protected override void PopOut()

View File

@ -66,7 +66,7 @@ namespace osu.Game.Screens.Play.HUD.JudgementCounter
counter.Direction.Value = getFlow(direction.NewValue); counter.Direction.Value = getFlow(direction.NewValue);
} }
}, true); }, true);
Mode.BindValueChanged(_ => updateCounter(), true); Mode.BindValueChanged(_ => updateMode(), true);
ShowMax.BindValueChanged(value => ShowMax.BindValueChanged(value =>
{ {
var firstChild = JudgementContainer.Children.FirstOrDefault(); var firstChild = JudgementContainer.Children.FirstOrDefault();
@ -81,32 +81,28 @@ namespace osu.Game.Screens.Play.HUD.JudgementCounter
}, true); }, true);
} }
private void updateCounter() private void updateMode()
{
foreach (var counter in JudgementContainer.Children.OfType<JudgementCounter>().Where(counter => !counter.Result.Type.IsBasic()))
{ {
var counters = JudgementContainer.Children.OfType<JudgementCounter>().ToList();
switch (Mode.Value) switch (Mode.Value)
{ {
case DisplayMode.Simple: case DisplayMode.Simple:
foreach (var counter in counters.Where(counter => counter.Result.Type.IsBasic()))
counter.Show();
foreach (var counter in counters.Where(counter => !counter.Result.Type.IsBasic()))
counter.Hide(); counter.Hide();
break; break;
case DisplayMode.Normal: case DisplayMode.Normal:
foreach (var counter in counters.Where(counter => !counter.Result.Type.IsBonus())) if (counter.Result.Type.IsBonus())
counter.Show(); {
foreach (var counter in counters.Where(counter => counter.Result.Type.IsBonus()))
counter.Hide(); counter.Hide();
break;
}
counter.Show();
break; break;
case DisplayMode.All: case DisplayMode.All:
foreach (JudgementCounter counter in counters.Where(counter => !counter.IsPresent))
counter.Show(); counter.Show();
break; break;
@ -115,6 +111,7 @@ namespace osu.Game.Screens.Play.HUD.JudgementCounter
throw new ArgumentOutOfRangeException(); throw new ArgumentOutOfRangeException();
} }
} }
}
private FillDirection getFlow(Flow flow) private FillDirection getFlow(Flow flow)
{ {
@ -149,7 +146,8 @@ namespace osu.Game.Screens.Play.HUD.JudgementCounter
{ {
JudgementCounter counter = new JudgementCounter(info) JudgementCounter counter = new JudgementCounter(info)
{ {
ShowName = { BindTarget = ShowName }, State = { Value = Visibility.Visible },
ShowName = { BindTarget = ShowName }
}; };
return counter; return counter;
} }