Skip to content

Commit

Permalink
Add failing test coverage showing offset adjust is not limited correctly
Browse files Browse the repository at this point in the history
  • Loading branch information
peppy committed Jan 16, 2025
1 parent 471180d commit a4174a3
Showing 1 changed file with 76 additions and 0 deletions.
76 changes: 76 additions & 0 deletions osu.Game.Tests/Visual/Navigation/TestSceneScreenNavigation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,82 @@ public void TestAttemptPlayBeatmapMissingFails()
AddUntilStep("wait for song select", () => songSelect.IsCurrentScreen());
}

[Test]
public void TestOffsetAdjustDuringPause()
{
Player player = null;

Screens.Select.SongSelect songSelect = null;
PushAndConfirm(() => songSelect = new TestPlaySongSelect());
AddUntilStep("wait for song select", () => songSelect.BeatmapSetsLoaded);

AddStep("import beatmap", () => BeatmapImportHelper.LoadQuickOszIntoOsu(Game).WaitSafely());

AddUntilStep("wait for selected", () => !Game.Beatmap.IsDefault);

AddStep("set mods", () => Game.SelectedMods.Value = new Mod[] { new OsuModNoFail() });
AddStep("press enter", () => InputManager.Key(Key.Enter));

AddUntilStep("wait for player", () =>
{
DismissAnyNotifications();
player = Game.ScreenStack.CurrentScreen as Player;
return player?.IsLoaded == true;
});

AddUntilStep("wait for track playing", () => Game.Beatmap.Value.Track.IsRunning);
checkOffset(0);

AddStep("adjust offset via keyboard", () => InputManager.Key(Key.Minus));
checkOffset(-1);

AddStep("pause", () => player.ChildrenOfType<GameplayClockContainer>().First().Stop());
AddUntilStep("wait for pause", () => player.ChildrenOfType<GameplayClockContainer>().First().IsPaused.Value, () => Is.True);
AddStep("attempt adjust offset via keyboard", () => InputManager.Key(Key.Minus));
checkOffset(-1);

void checkOffset(double offset) => AddUntilStep($"offset is {offset}", () => Game.BeatmapManager.QueryBeatmap(b => b.ID == Game.Beatmap.Value.BeatmapInfo.ID)!.UserSettings.Offset,
() => Is.EqualTo(offset));
}

[Test]
public void TestOffsetAdjustDuringGameplay()
{
Player player = null;

Screens.Select.SongSelect songSelect = null;
PushAndConfirm(() => songSelect = new TestPlaySongSelect());
AddUntilStep("wait for song select", () => songSelect.BeatmapSetsLoaded);

AddStep("import beatmap", () => BeatmapImportHelper.LoadOszIntoOsu(Game).WaitSafely());

AddUntilStep("wait for selected", () => !Game.Beatmap.IsDefault);

AddStep("set mods", () => Game.SelectedMods.Value = new Mod[] { new OsuModNoFail() });
AddStep("press enter", () => InputManager.Key(Key.Enter));

AddUntilStep("wait for player", () =>
{
DismissAnyNotifications();
player = Game.ScreenStack.CurrentScreen as Player;
return player?.IsLoaded == true;
});

AddUntilStep("wait for track playing", () => Game.Beatmap.Value.Track.IsRunning);
checkOffset(0);

AddStep("adjust offset via keyboard", () => InputManager.Key(Key.Minus));
checkOffset(-1);

AddStep("seek beyond 10 seconds", () => player.ChildrenOfType<GameplayClockContainer>().First().Seek(10500));
AddUntilStep("wait for seek", () => player.ChildrenOfType<GameplayClockContainer>().First().CurrentTime, () => Is.GreaterThan(10600));
AddStep("attempt adjust offset via keyboard", () => InputManager.Key(Key.Minus));
checkOffset(-1);

void checkOffset(double offset) => AddUntilStep($"offset is {offset}", () => Game.BeatmapManager.QueryBeatmap(b => b.ID == Game.Beatmap.Value.BeatmapInfo.ID)!.UserSettings.Offset,
() => Is.EqualTo(offset));
}

[Test]
public void TestRetryCountIncrements()
{
Expand Down

0 comments on commit a4174a3

Please sign in to comment.