mirror of
https://github.com/osukey/osukey.git
synced 2025-05-03 20:57:28 +09:00
Fix intermittent test failures on TestSceneResultsScreen
due to long delay step
Using real time delays of 3 seconds doesn't play well with headless runs.
This commit is contained in:
parent
a8cd96278d
commit
c0a8758839
@ -203,8 +203,12 @@ namespace osu.Game.Tests.Visual.Ranking
|
|||||||
{
|
{
|
||||||
DelayedFetchResultsScreen screen = null;
|
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);
|
AddUntilStep("wait for loaded", () => screen.IsLoaded);
|
||||||
|
|
||||||
AddStep("click expanded panel", () =>
|
AddStep("click expanded panel", () =>
|
||||||
{
|
{
|
||||||
var expandedPanel = this.ChildrenOfType<ScorePanel>().Single(p => p.State == PanelState.Expanded);
|
var expandedPanel = this.ChildrenOfType<ScorePanel>().Single(p => p.State == PanelState.Expanded);
|
||||||
@ -212,6 +216,10 @@ namespace osu.Game.Tests.Visual.Ranking
|
|||||||
InputManager.Click(MouseButton.Left);
|
InputManager.Click(MouseButton.Left);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
AddAssert("no fetch yet", () => !screen.FetchCompleted);
|
||||||
|
|
||||||
|
AddStep("allow fetch", () => tcs.SetResult());
|
||||||
|
|
||||||
AddUntilStep("wait for fetch", () => screen.FetchCompleted);
|
AddUntilStep("wait for fetch", () => screen.FetchCompleted);
|
||||||
AddAssert("expanded panel still on screen", () => this.ChildrenOfType<ScorePanel>().Single(p => p.State == PanelState.Expanded).ScreenSpaceDrawQuad.TopLeft.X > 0);
|
AddAssert("expanded panel still on screen", () => this.ChildrenOfType<ScorePanel>().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 class DelayedFetchResultsScreen : TestResultsScreen
|
||||||
{
|
{
|
||||||
|
private readonly Task fetchWaitTask;
|
||||||
|
|
||||||
public bool FetchCompleted { get; private set; }
|
public bool FetchCompleted { get; private set; }
|
||||||
|
|
||||||
private readonly double delay;
|
public DelayedFetchResultsScreen(ScoreInfo score, Task fetchWaitTask = null)
|
||||||
|
|
||||||
public DelayedFetchResultsScreen(ScoreInfo score, double delay)
|
|
||||||
: base(score)
|
: base(score)
|
||||||
{
|
{
|
||||||
this.delay = delay;
|
this.fetchWaitTask = fetchWaitTask ?? Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override APIRequest FetchScores(Action<IEnumerable<ScoreInfo>> scoresCallback)
|
protected override APIRequest FetchScores(Action<IEnumerable<ScoreInfo>> scoresCallback)
|
||||||
{
|
{
|
||||||
Task.Run(async () =>
|
Task.Run(async () =>
|
||||||
{
|
{
|
||||||
await Task.Delay(TimeSpan.FromMilliseconds(delay));
|
await fetchWaitTask;
|
||||||
|
|
||||||
var scores = new List<ScoreInfo>();
|
var scores = new List<ScoreInfo>();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user