diff --git a/osu.Game.Tests/Visual/Ranking/TestSceneResultsScreen.cs b/osu.Game.Tests/Visual/Ranking/TestSceneResultsScreen.cs index d0bd5a6e66..666cbf02b5 100644 --- a/osu.Game.Tests/Visual/Ranking/TestSceneResultsScreen.cs +++ b/osu.Game.Tests/Visual/Ranking/TestSceneResultsScreen.cs @@ -203,8 +203,12 @@ namespace osu.Game.Tests.Visual.Ranking { DelayedFetchResultsScreen screen = null; - AddStep("load results", () => Child = new TestResultsContainer(screen = new DelayedFetchResultsScreen(TestResources.CreateTestScoreInfo(), 3000))); + var tcs = new TaskCompletionSource(); + + AddStep("load results", () => Child = new TestResultsContainer(screen = new DelayedFetchResultsScreen(TestResources.CreateTestScoreInfo(), tcs.Task))); + AddUntilStep("wait for loaded", () => screen.IsLoaded); + AddStep("click expanded panel", () => { var expandedPanel = this.ChildrenOfType().Single(p => p.State == PanelState.Expanded); @@ -212,6 +216,10 @@ namespace osu.Game.Tests.Visual.Ranking InputManager.Click(MouseButton.Left); }); + AddAssert("no fetch yet", () => !screen.FetchCompleted); + + AddStep("allow fetch", () => tcs.SetResult()); + AddUntilStep("wait for fetch", () => screen.FetchCompleted); AddAssert("expanded panel still on screen", () => this.ChildrenOfType().Single(p => p.State == PanelState.Expanded).ScreenSpaceDrawQuad.TopLeft.X > 0); } @@ -295,21 +303,21 @@ namespace osu.Game.Tests.Visual.Ranking private class DelayedFetchResultsScreen : TestResultsScreen { + private readonly Task fetchWaitTask; + public bool FetchCompleted { get; private set; } - private readonly double delay; - - public DelayedFetchResultsScreen(ScoreInfo score, double delay) + public DelayedFetchResultsScreen(ScoreInfo score, Task fetchWaitTask = null) : base(score) { - this.delay = delay; + this.fetchWaitTask = fetchWaitTask ?? Task.CompletedTask; } protected override APIRequest FetchScores(Action> scoresCallback) { Task.Run(async () => { - await Task.Delay(TimeSpan.FromMilliseconds(delay)); + await fetchWaitTask; var scores = new List();