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.cs89
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 ();