Add test scenarios for same-frame judgements

This commit is contained in:
Salman Ahmed 2023-12-05 21:55:25 +03:00
parent 9496cdf42b
commit 986f4fa407
1 changed files with 32 additions and 4 deletions

View File

@ -83,13 +83,18 @@ public void TestHealthDisplayIncrementing()
AddRepeatStep(@"increase hp with flash", delegate
{
healthProcessor.Health.Value += 0.1f;
healthProcessor.ApplyResult(new JudgementResult(new HitCircle(), new OsuJudgement())
{
Type = HitResult.Perfect
});
applyPerfectHit();
}, 3);
}
private void applyPerfectHit()
{
healthProcessor.ApplyResult(new JudgementResult(new HitCircle(), new OsuJudgement())
{
Type = HitResult.Perfect
});
}
[Test]
public void TestLateMissAfterConsequentMisses()
{
@ -124,6 +129,29 @@ public void TestMissAlmostExactlyAfterLastMissAnimation()
});
}
[Test]
public void TestMissThenHitAtSameUpdateFrame()
{
AddUntilStep("wait for health", () => healthDisplay.Current.Value == 1);
AddStep("set half health", () => healthProcessor.Health.Value = 0.5f);
AddStep("apply miss and hit", () =>
{
applyMiss();
applyMiss();
applyPerfectHit();
applyPerfectHit();
});
AddWaitStep("wait", 3);
AddStep("apply miss and cancel with hit", () =>
{
applyMiss();
applyPerfectHit();
applyPerfectHit();
applyPerfectHit();
applyPerfectHit();
});
}
private void applyMiss()
{
healthProcessor.ApplyResult(new JudgementResult(new HitObject(), new Judgement()) { Type = HitResult.Miss });