public void TestEventOrder() { List <int> order = new List <int>(); var screen1 = new TestScreen { Entered = () => order.Add(1), Suspended = () => order.Add(2), Resumed = () => order.Add(5), }; var screen2 = new TestScreen { Entered = () => order.Add(3), Exited = () => order.Add(4), }; AddStep("push screen1", () => stack.Push(screen1)); AddUntilStep("ensure current", () => screen1.IsCurrentScreen()); AddStep("preload screen2", () => LoadComponentAsync(screen2)); AddUntilStep("wait for load", () => screen2.LoadState == LoadState.Ready); AddStep("push screen2", () => screen1.Push(screen2)); AddUntilStep("ensure current", () => screen2.IsCurrentScreen()); AddStep("exit screen2", () => screen2.Exit()); AddUntilStep("ensure exited", () => !screen2.IsCurrentScreen()); AddStep("push screen2", () => screen1.Exit()); AddUntilStep("ensure exited", () => !screen1.IsCurrentScreen()); AddAssert("order is correct", () => order.SequenceEqual(order.OrderBy(i => i))); }
public void TestPushOnExiting() { TestScreen screen1 = null; pushAndEnsureCurrent(() => { screen1 = new TestScreen(id: 1); screen1.Exiting = () => { screen1.Push(new TestScreen(id: 2)); return(true); }; return(screen1); }); AddStep("Exit screen 1", () => screen1.Exit()); AddAssert("Screen 1 is not current", () => !screen1.IsCurrentScreen()); AddAssert("Stack is not empty", () => stack.CurrentScreen != null); }