diff options
Diffstat (limited to 'Xamarin.Forms.Core.UnitTests/NavigationUnitTest.cs')
-rw-r--r-- | Xamarin.Forms.Core.UnitTests/NavigationUnitTest.cs | 193 |
1 files changed, 18 insertions, 175 deletions
diff --git a/Xamarin.Forms.Core.UnitTests/NavigationUnitTest.cs b/Xamarin.Forms.Core.UnitTests/NavigationUnitTest.cs index fb68d14e..1cc3ac6a 100644 --- a/Xamarin.Forms.Core.UnitTests/NavigationUnitTest.cs +++ b/Xamarin.Forms.Core.UnitTests/NavigationUnitTest.cs @@ -14,7 +14,6 @@ namespace Xamarin.Forms.Core.UnitTests { NavigationPage nav = new NavigationPage (); - Assert.IsNull(nav.RootPage); Assert.IsNull (nav.CurrentPage); Label child = new Label {Text = "Label"}; @@ -22,9 +21,7 @@ namespace Xamarin.Forms.Core.UnitTests await nav.Navigation.PushAsync (childRoot); - Assert.AreSame(childRoot, nav.RootPage); - Assert.AreSame(childRoot, nav.CurrentPage); - Assert.AreSame(nav.RootPage, nav.CurrentPage); + Assert.AreSame (childRoot, nav.CurrentPage); } [Test] @@ -43,26 +40,16 @@ namespace Xamarin.Forms.Core.UnitTests bool fired = false; nav.Popped += (sender, e) => fired = true; - - Assert.AreSame(childRoot, nav.RootPage); - Assert.AreNotSame(childRoot2, nav.RootPage); - Assert.AreNotSame(nav.RootPage, nav.CurrentPage); - var popped = await nav.Navigation.PopAsync (); Assert.True (fired); - Assert.AreSame(childRoot, nav.RootPage); - Assert.AreSame(childRoot, nav.CurrentPage); - Assert.AreSame(nav.RootPage, nav.CurrentPage); + Assert.AreSame (childRoot, nav.CurrentPage); Assert.AreEqual (childRoot2, popped); await nav.PopAsync (); var last = await nav.Navigation.PopAsync (); Assert.IsNull (last); - Assert.IsNotNull(nav.RootPage); - Assert.IsNotNull(nav.CurrentPage); - Assert.AreSame(nav.RootPage, nav.CurrentPage); } [Test] @@ -70,7 +57,6 @@ namespace Xamarin.Forms.Core.UnitTests { NavigationPage nav = new NavigationPage (); - Assert.IsNull(nav.RootPage); Assert.IsNull (nav.CurrentPage); Label child = new Label {Text = "Label"}; @@ -78,9 +64,7 @@ namespace Xamarin.Forms.Core.UnitTests await nav.PushAsync (childRoot); - Assert.AreSame (childRoot, nav.RootPage); - Assert.AreSame(childRoot, nav.CurrentPage); - Assert.AreSame(nav.RootPage, nav.CurrentPage); + Assert.AreSame (childRoot, nav.CurrentPage); } [Test] @@ -112,15 +96,10 @@ namespace Xamarin.Forms.Core.UnitTests bool fired = false; nav.Pushed += (sender, e) => fired = true; - Assert.AreSame(childRoot, nav.RootPage); - Assert.AreSame(childRoot, nav.CurrentPage); - await nav.PushAsync (childRoot); Assert.False (fired); - Assert.AreSame(childRoot, nav.RootPage); - Assert.AreSame(childRoot, nav.CurrentPage); - Assert.AreSame(nav.RootPage, nav.CurrentPage); + Assert.AreEqual (childRoot, nav.CurrentPage); } [Test] @@ -205,9 +184,7 @@ namespace Xamarin.Forms.Core.UnitTests nav.PopToRootAsync (); Assert.True (signaled); - Assert.AreSame (root, nav.RootPage); - Assert.AreSame(root, nav.CurrentPage); - Assert.AreSame(nav.RootPage, nav.CurrentPage); + Assert.AreEqual (root, nav.CurrentPage); } [Test] @@ -232,100 +209,32 @@ namespace Xamarin.Forms.Core.UnitTests Assert.AreEqual (2, poppedChildren.Count); Assert.Contains (child1, poppedChildren); Assert.Contains (child2, poppedChildren); - Assert.AreSame(root, nav.RootPage); - Assert.AreSame(root, nav.CurrentPage); - Assert.AreSame(nav.RootPage, nav.CurrentPage); - } - - [Test] - public async Task PeekOne() - { - 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), child1); + Assert.AreEqual (root, nav.CurrentPage); } [Test] - public async Task PeekZero() + public async Task TestStackCopy () { - 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(0), child2); - Assert.AreEqual(((INavigationPageController)nav).Peek(), 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(); + 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); - } + var root = new ContentPage {Content = new View ()}; + var child1 = new ContentPage {Content = new View ()}; + var child2 = new ContentPage {Content = new View ()}; - [Test] - public async Task PeekEmpty([Range(0, 3)] int depth) - { - var nav = new NavigationPage(); + await nav.PushAsync (root); + await nav.PushAsync (child1); + await nav.PushAsync (child2); - bool signaled = false; - nav.PoppedToRoot += (sender, args) => signaled = true; + var copy = ((INavigationPageController)nav).StackCopy; - Assert.AreEqual(((INavigationPageController)nav).Peek(depth), null); + Assert.AreEqual (child2, copy.Pop ()); + Assert.AreEqual (child1, copy.Pop ()); + Assert.AreEqual (root, copy.Pop ()); } - [Test] public void ConstructWithRoot () { @@ -483,72 +392,6 @@ namespace Xamarin.Forms.Core.UnitTests Assert.False (result); } - [Test] - public void TestInsertPage() - { - var root = new ContentPage { Title = "Root" }; - var newPage = new ContentPage(); - var navPage = new NavigationPage(root); - - navPage.Navigation.InsertPageBefore(newPage, navPage.RootPage); - - Assert.AreSame(newPage, navPage.RootPage); - Assert.AreNotSame(newPage, navPage.CurrentPage); - Assert.AreNotSame(navPage.RootPage, navPage.CurrentPage); - Assert.AreSame(root, navPage.CurrentPage); - - Assert.Throws<ArgumentException>(() => - { - navPage.Navigation.InsertPageBefore(new ContentPage(), new ContentPage()); - }); - - Assert.Throws<ArgumentException>(() => - { - navPage.Navigation.InsertPageBefore(navPage.RootPage, navPage.CurrentPage); - }); - - Assert.Throws<ArgumentNullException>(() => - { - navPage.Navigation.InsertPageBefore(null, navPage.CurrentPage); - }); - - Assert.Throws<ArgumentNullException>(() => - { - navPage.Navigation.InsertPageBefore(new ContentPage(), null); - }); - } - - [Test] - public async void TestRemovePage() - { - var root = new ContentPage { Title = "Root" }; - var newPage = new ContentPage(); - var navPage = new NavigationPage(root); - await navPage.PushAsync(newPage); - - navPage.Navigation.RemovePage(root); - - Assert.AreSame(newPage, navPage.RootPage); - Assert.AreSame(newPage, navPage.CurrentPage); - Assert.AreSame(navPage.RootPage, navPage.CurrentPage); - Assert.AreNotSame(root, navPage.CurrentPage); - - Assert.Throws<ArgumentException>(() => - { - navPage.Navigation.RemovePage(root); - }); - - Assert.Throws<InvalidOperationException>(() => - { - navPage.Navigation.RemovePage(newPage); - }); - - Assert.Throws<ArgumentNullException>(() => - { - navPage.Navigation.RemovePage(null); - }); - } - [Test (Description = "CurrentPage should not be set to null when you attempt to pop the last page")] [Property ("Bugzilla", 28335)] public async Task CurrentPageNotNullPoppingRoot() |