public void TestPerformBlockedByDialog(bool confirmed) { DialogBlockingScreen blocker = null; PushAndConfirm(() => blocker = new DialogBlockingScreen()); AddStep("try to perform", () => Game.PerformFromScreen(_ => actionPerformed = true)); AddWaitStep("wait a bit", 10); AddAssert("screen didn't change", () => Game.ScreenStack.CurrentScreen is DialogBlockingScreen); AddAssert("did not perform", () => !actionPerformed); AddAssert("only one exit attempt", () => blocker.ExitAttempts == 1); AddUntilStep("wait for dialog display", () => Game.Dependencies.Get <DialogOverlay>().IsLoaded); if (confirmed) { AddStep("accept dialog", () => InputManager.Key(Key.Number1)); AddUntilStep("wait for dialog dismissed", () => Game.Dependencies.Get <DialogOverlay>().CurrentDialog == null); AddUntilStep("did perform", () => actionPerformed); } else { AddStep("cancel dialog", () => InputManager.Key(Key.Number2)); AddAssert("screen didn't change", () => Game.ScreenStack.CurrentScreen is DialogBlockingScreen); AddAssert("did not perform", () => !actionPerformed); } }
public void TestPerformBlockedByDialogNested(bool confirmSecond) { DialogBlockingScreen blocker = null; DialogBlockingScreen blocker2 = null; PushAndConfirm(() => blocker = new DialogBlockingScreen()); PushAndConfirm(() => blocker2 = new DialogBlockingScreen()); AddStep("try to perform", () => Game.PerformFromScreen(_ => actionPerformed = true)); AddUntilStep("wait for dialog", () => blocker2.ExitAttempts == 1); AddWaitStep("wait a bit", 10); waitForDialogOverlayLoad(); AddAssert("screen didn't change", () => Game.ScreenStack.CurrentScreen == blocker2); AddAssert("did not perform", () => !actionPerformed); AddAssert("only one exit attempt", () => blocker2.ExitAttempts == 1); AddStep("accept dialog", () => InputManager.Key(Key.Number1)); AddUntilStep("screen changed", () => Game.ScreenStack.CurrentScreen == blocker); AddUntilStep("wait for second dialog", () => blocker.ExitAttempts == 1); AddAssert("did not perform", () => !actionPerformed); AddAssert("only one exit attempt", () => blocker.ExitAttempts == 1); if (confirmSecond) { AddStep("accept dialog", () => InputManager.Key(Key.Number1)); AddUntilStep("did perform", () => actionPerformed); } else { AddStep("cancel dialog", () => InputManager.Key(Key.Number2)); AddAssert("screen didn't change", () => Game.ScreenStack.CurrentScreen == blocker); AddAssert("did not perform", () => !actionPerformed); } }
public TestScreenWithNestedStack() { AddInternal(SubScreenStack); SubScreenStack.Push(Blocker = new DialogBlockingScreen()); }