diff options
Diffstat (limited to 'Xamarin.Forms.Core.UnitTests/NavigationUnitTest.cs')
-rw-r--r-- | Xamarin.Forms.Core.UnitTests/NavigationUnitTest.cs | 89 |
1 files changed, 77 insertions, 12 deletions
diff --git a/Xamarin.Forms.Core.UnitTests/NavigationUnitTest.cs b/Xamarin.Forms.Core.UnitTests/NavigationUnitTest.cs index 1cc3ac6a..7118e149 100644 --- a/Xamarin.Forms.Core.UnitTests/NavigationUnitTest.cs +++ b/Xamarin.Forms.Core.UnitTests/NavigationUnitTest.cs @@ -213,29 +213,94 @@ namespace Xamarin.Forms.Core.UnitTests } [Test] - public async Task TestStackCopy () + public async Task PeekOne() { - var nav = new NavigationPage (); + var nav = new NavigationPage(); bool signaled = false; nav.PoppedToRoot += (sender, args) => signaled = true; - var root = new ContentPage {Content = new View ()}; - var child1 = new ContentPage {Content = new View ()}; - var child2 = new ContentPage {Content = new View ()}; + var root = new ContentPage { Content = new View() }; + var child1 = new ContentPage { Content = new View() }; + var child2 = new ContentPage { Content = new View() }; - await nav.PushAsync (root); - await nav.PushAsync (child1); - await nav.PushAsync (child2); + await nav.PushAsync(root); + await nav.PushAsync(child1); + await nav.PushAsync(child2); + + Assert.AreEqual(((INavigationPageController)nav).Peek(1), child1); + } - var copy = ((INavigationPageController)nav).StackCopy; + [Test] + public async Task PeekZero() + { + var nav = new NavigationPage(); - Assert.AreEqual (child2, copy.Pop ()); - Assert.AreEqual (child1, copy.Pop ()); - Assert.AreEqual (root, copy.Pop ()); + bool signaled = false; + nav.PoppedToRoot += (sender, args) => signaled = true; + + var root = new ContentPage { Content = new View() }; + var child1 = new ContentPage { Content = new View() }; + var child2 = new ContentPage { Content = new View() }; + + await nav.PushAsync(root); + await nav.PushAsync(child1); + await nav.PushAsync(child2); + + Assert.AreEqual(((INavigationPageController)nav).Peek(0), child2); } [Test] + public async Task PeekPastStackDepth() + { + var nav = new NavigationPage(); + + bool signaled = false; + nav.PoppedToRoot += (sender, args) => signaled = true; + + var root = new ContentPage { Content = new View() }; + var child1 = new ContentPage { Content = new View() }; + var child2 = new ContentPage { Content = new View() }; + + await nav.PushAsync(root); + await nav.PushAsync(child1); + await nav.PushAsync(child2); + + Assert.AreEqual(((INavigationPageController)nav).Peek(3), null); + } + + [Test] + public async Task PeekShallow() + { + var nav = new NavigationPage(); + + bool signaled = false; + nav.PoppedToRoot += (sender, args) => signaled = true; + + var root = new ContentPage { Content = new View() }; + var child1 = new ContentPage { Content = new View() }; + var child2 = new ContentPage { Content = new View() }; + + await nav.PushAsync(root); + await nav.PushAsync(child1); + await nav.PushAsync(child2); + + Assert.AreEqual(((INavigationPageController)nav).Peek(-1), null); + } + + [Test] + public async Task PeekEmpty([Range(0, 3)] int depth) + { + var nav = new NavigationPage(); + + bool signaled = false; + nav.PoppedToRoot += (sender, args) => signaled = true; + + Assert.AreEqual(((INavigationPageController)nav).Peek(depth), null); + } + + + [Test] public void ConstructWithRoot () { var root = new ContentPage (); |