public void PageStackBasic()
{
PageStack stack = new PageStack();
bool observableWorked = false;
PropertyChangedEventHandler firstChecker = (sender, e) =>
{
if(e.PropertyName != nameof(PageStack.CurrentPage))
{
return;
}
Assert.IsNotNull(stack.CurrentPage);
Assert.AreEqual(0, stack.CurrentPage.RouteVariables.Count);
observableWorked = true;
};
stack.PropertyChanged += firstChecker;
stack.RegisterRoute("Home", () => new Page());
stack.Navigate("Home");
Assert.IsTrue(observableWorked);
stack.PropertyChanged -= firstChecker;
try
{
stack.Navigate("BadRoute");
Assert.Fail("An exception should have been thrown");
}
catch (KeyNotFoundException)
{
}
stack.RegisterRoute("Applications/{ApplicationId}/Components/{ComponentId}", () => new Page());
stack.Navigate("Applications/foo/Components/bar");
Assert.IsTrue(stack.CurrentPage.RouteVariables.Count == 2);
Assert.AreEqual("foo", stack.CurrentPage.RouteVariables["ApplicationId"]);
Assert.AreEqual("bar", stack.CurrentPage.RouteVariables["ComponentId"]);
}