196 строки
4.6 KiB
C#
196 строки
4.6 KiB
C#
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using NUnit.Framework;
|
|
using Xamarin.Forms.Internals;
|
|
|
|
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 ());
|
|
}
|
|
}
|
|
}
|