summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Core.UnitTests/NavigationUnitTest.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Core.UnitTests/NavigationUnitTest.cs')
-rw-r--r--Xamarin.Forms.Core.UnitTests/NavigationUnitTest.cs193
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()