summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Core.UnitTests/ToolbarTrackerTests.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Core.UnitTests/ToolbarTrackerTests.cs')
-rw-r--r--Xamarin.Forms.Core.UnitTests/ToolbarTrackerTests.cs194
1 files changed, 194 insertions, 0 deletions
diff --git a/Xamarin.Forms.Core.UnitTests/ToolbarTrackerTests.cs b/Xamarin.Forms.Core.UnitTests/ToolbarTrackerTests.cs
new file mode 100644
index 00000000..32155be3
--- /dev/null
+++ b/Xamarin.Forms.Core.UnitTests/ToolbarTrackerTests.cs
@@ -0,0 +1,194 @@
+´╗┐using System.Linq;
+using System.Threading.Tasks;
+using NUnit.Framework;
+
+namespace Xamarin.Forms.Core.UnitTests
+{
+ [TestFixture]
+ internal class ToolbarTrackerTests : BaseTestFixture
+ {
+ [Test]
+ public void Constructor ()
+ {
+ var tracker = new ToolbarTracker ();
+ Assert.Null (tracker.Target);
+ Assert.False (tracker.ToolbarItems.Any ());
+ }
+
+ [Test]
+ public void SimpleTrackEmpty ()
+ {
+ var tracker = new ToolbarTracker ();
+
+ var page = new ContentPage ();
+ tracker.Target = page;
+
+ Assert.False (tracker.ToolbarItems.Any ());
+ }
+
+ [Test]
+ public void SimpleTrackWithItems ()
+ {
+ var tracker = new ToolbarTracker ();
+
+ ToolbarItem item1, item2;
+ var page = new ContentPage {
+ ToolbarItems = {
+ new ToolbarItem ("Foo", "Foo.png", () => {}),
+ new ToolbarItem ("Bar", "Bar.png", () => {})
+ }
+ };
+ tracker.Target = page;
+
+ Assert.True (tracker.ToolbarItems.Contains (page.ToolbarItems[0]));
+ Assert.True (tracker.ToolbarItems.Contains (page.ToolbarItems[1]));
+ }
+
+ [Test]
+ public void TrackPreConstructedTabbedPage ()
+ {
+ var tracker = new ToolbarTracker ();
+
+ var toolbarItem1 = new ToolbarItem ("Foo", "Foo.png", () => { });
+ var toolbarItem2 = new ToolbarItem ("Foo", "Foo.png", () => { });
+ var toolbarItem3 = new ToolbarItem ("Foo", "Foo.png", () => { });
+
+ var subPage1 = new ContentPage {
+ ToolbarItems = {toolbarItem1}
+ };
+
+ var subPage2 = new ContentPage {
+ ToolbarItems = {toolbarItem2, toolbarItem3}
+ };
+
+ var tabbedpage = new TabbedPage {
+ Children = {
+ subPage1,
+ subPage2
+ }
+ };
+
+ tabbedpage.CurrentPage = subPage1;
+
+ tracker.Target = tabbedpage;
+
+ Assert.True (tracker.ToolbarItems.Count () == 1);
+ Assert.True (tracker.ToolbarItems.First () == subPage1.ToolbarItems[0]);
+
+ bool changed = false;
+ tracker.CollectionChanged += (sender, args) => changed = true;
+
+ tabbedpage.CurrentPage = subPage2;
+
+ Assert.True (tracker.ToolbarItems.Count () == 2);
+ Assert.True (tracker.ToolbarItems.First () == subPage2.ToolbarItems[0]);
+ Assert.True (tracker.ToolbarItems.Last () == subPage2.ToolbarItems[1]);
+ }
+
+ [Test]
+ public void AdditionalTargets ()
+ {
+ var tracker = new ToolbarTracker ();
+
+ var toolbarItem1 = new ToolbarItem ("Foo", "Foo.png", () => { });
+ var toolbarItem2 = new ToolbarItem ("Foo", "Foo.png", () => { });
+
+ var page = new ContentPage {
+ ToolbarItems = {
+ toolbarItem1
+ }
+ };
+
+ var additionalPage = new ContentPage {
+ ToolbarItems = {toolbarItem2}
+ };
+
+ tracker.Target = page;
+ tracker.AdditionalTargets = new[] {additionalPage};
+
+ Assert.True (tracker.ToolbarItems.Contains (toolbarItem1));
+ Assert.True (tracker.ToolbarItems.Contains (toolbarItem2));
+ }
+
+ [Test]
+ public async Task PushAfterTrackingStarted ()
+ {
+ var tracker = new ToolbarTracker ();
+
+ var toolbarItem1 = new ToolbarItem ("Foo", "Foo.png", () => { });
+ var toolbarItem2 = new ToolbarItem ("Foo", "Foo.png", () => { });
+
+ var page = new NavigationPage {
+ ToolbarItems = {
+ toolbarItem1
+ }
+ };
+
+ var firstPage = new ContentPage {
+ ToolbarItems = { toolbarItem2 }
+ };
+
+ tracker.Target = page;
+
+ Assert.True (tracker.ToolbarItems.Contains (toolbarItem1));
+ Assert.False (tracker.ToolbarItems.Contains (toolbarItem2));
+
+ await page.Navigation.PushAsync (firstPage);
+
+ Assert.True (tracker.ToolbarItems.Contains (toolbarItem1));
+ Assert.True (tracker.ToolbarItems.Contains (toolbarItem2));
+ }
+
+ [Test]
+ public async Task PopAfterTrackingStarted ()
+ {
+ var tracker = new ToolbarTracker ();
+
+ var toolbarItem1 = new ToolbarItem ("Foo", "Foo.png", () => { });
+ var toolbarItem2 = new ToolbarItem ("Foo", "Foo.png", () => { });
+
+ var page = new NavigationPage (new ContentPage ()) {
+ ToolbarItems = {
+ toolbarItem1
+ }
+ };
+
+ var firstPage = new ContentPage {
+ ToolbarItems = { toolbarItem2 }
+ };
+
+ tracker.Target = page;
+
+ await page.Navigation.PushAsync (firstPage);
+
+ Assert.True (tracker.ToolbarItems.Contains (toolbarItem1));
+ Assert.True (tracker.ToolbarItems.Contains (toolbarItem2));
+
+ await page.Navigation.PopAsync ();
+
+ Assert.True (tracker.ToolbarItems.Contains (toolbarItem1));
+ Assert.False (tracker.ToolbarItems.Contains (toolbarItem2));
+ }
+
+ [Test]
+ public void UnsetTarget ()
+ {
+ var tracker = new ToolbarTracker ();
+
+ ToolbarItem item1, item2;
+ var page = new ContentPage {
+ ToolbarItems = {
+ new ToolbarItem ("Foo", "Foo.png", () => {}),
+ new ToolbarItem ("Bar", "Bar.png", () => {})
+ }
+ };
+ tracker.Target = page;
+
+ Assert.True (tracker.ToolbarItems.Count () == 2);
+
+ tracker.Target = null;
+
+ Assert.False (tracker.ToolbarItems.Any ());
+ }
+ }
+}