예제 #1
0
        public void RoutedViewHost_Should_Stay_In_Sync_With_RoutingState()
        {
            var screen         = new ScreenViewModel();
            var defaultContent = new TextBlock();
            var host           = new RoutedViewHost
            {
                Router           = screen.Router,
                DefaultContent   = defaultContent,
                FadeOutAnimation = null,
                FadeInAnimation  = null
            };

            var root = new TestRoot
            {
                Child = host
            };

            Assert.NotNull(host.Content);
            Assert.Equal(typeof(TextBlock), host.Content.GetType());
            Assert.Equal(defaultContent, host.Content);

            var first = new FirstRoutableViewModel();

            screen.Router.Navigate
            .Execute(first)
            .Subscribe();

            Assert.NotNull(host.Content);
            Assert.Equal(typeof(FirstRoutableView), host.Content.GetType());
            Assert.Equal(first, ((FirstRoutableView)host.Content).DataContext);
            Assert.Equal(first, ((FirstRoutableView)host.Content).ViewModel);

            var second = new SecondRoutableViewModel();

            screen.Router.Navigate
            .Execute(second)
            .Subscribe();

            Assert.NotNull(host.Content);
            Assert.Equal(typeof(SecondRoutableView), host.Content.GetType());
            Assert.Equal(second, ((SecondRoutableView)host.Content).DataContext);
            Assert.Equal(second, ((SecondRoutableView)host.Content).ViewModel);

            screen.Router.NavigateBack
            .Execute(Unit.Default)
            .Subscribe();

            Assert.NotNull(host.Content);
            Assert.Equal(typeof(FirstRoutableView), host.Content.GetType());
            Assert.Equal(first, ((FirstRoutableView)host.Content).DataContext);
            Assert.Equal(first, ((FirstRoutableView)host.Content).ViewModel);

            screen.Router.NavigateBack
            .Execute(Unit.Default)
            .Subscribe();

            Assert.NotNull(host.Content);
            Assert.Equal(typeof(TextBlock), host.Content.GetType());
            Assert.Equal(defaultContent, host.Content);
        }
예제 #2
0
        public void RoutedViewHost_Should_Stay_In_Sync_With_RoutingState()
        {
            var screen         = new ScreenViewModel();
            var defaultContent = new TextBlock();
            var host           = new RoutedViewHost
            {
                Router         = screen.Router,
                DefaultContent = defaultContent,
                PageTransition = null
            };

            var root = new TestRoot
            {
                Child = host
            };

            Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
            Assert.NotNull(host.Content);
            Assert.IsType <TextBlock>(host.Content);
            Assert.Equal(defaultContent, host.Content);

            var first = new FirstRoutableViewModel();

            screen.Router.Navigate.Execute(first).Subscribe();

            Assert.NotNull(host.Content);
            Assert.IsType <FirstRoutableView>(host.Content);
            Assert.Equal(first, ((FirstRoutableView)host.Content).DataContext);
            Assert.Equal(first, ((FirstRoutableView)host.Content).ViewModel);

            var second = new SecondRoutableViewModel();

            screen.Router.Navigate.Execute(second).Subscribe();

            Assert.NotNull(host.Content);
            Assert.IsType <SecondRoutableView>(host.Content);
            Assert.Equal(second, ((SecondRoutableView)host.Content).DataContext);
            Assert.Equal(second, ((SecondRoutableView)host.Content).ViewModel);

            screen.Router.NavigateBack.Execute(Unit.Default).Subscribe();

            Assert.NotNull(host.Content);
            Assert.IsType <FirstRoutableView>(host.Content);
            Assert.Equal(first, ((FirstRoutableView)host.Content).DataContext);
            Assert.Equal(first, ((FirstRoutableView)host.Content).ViewModel);

            screen.Router.NavigateBack.Execute(Unit.Default).Subscribe();

            Assert.NotNull(host.Content);
            Assert.IsType <TextBlock>(host.Content);
            Assert.Equal(defaultContent, host.Content);
        }
예제 #3
0
        public void RoutedViewHost_Should_Show_Default_Content_When_Router_Is_Null()
        {
            var screen         = new ScreenViewModel();
            var defaultContent = new TextBlock();
            var host           = new RoutedViewHost
            {
                DefaultContent = defaultContent,
                PageTransition = null,
                Router         = null
            };

            var root = new TestRoot
            {
                Child = host
            };

            Dispatcher.UIThread.RunJobs(DispatcherPriority.Loaded);
            Assert.NotNull(host.Content);
            Assert.Equal(defaultContent, host.Content);

            host.Router = screen.Router;

            Assert.NotNull(host.Content);
            Assert.Equal(defaultContent, host.Content);

            var first = new FirstRoutableViewModel();

            screen.Router.Navigate.Execute(first).Subscribe();

            Assert.NotNull(host.Content);
            Assert.IsType <FirstRoutableView>(host.Content);

            host.Router = null;

            Assert.NotNull(host.Content);
            Assert.Equal(defaultContent, host.Content);

            host.Router = screen.Router;

            Assert.NotNull(host.Content);
            Assert.IsType <FirstRoutableView>(host.Content);
        }
        public void RoutedViewHost_Should_Stay_In_Sync_With_RoutingState_And_Contract()
        {
            var screen         = new ScreenViewModel();
            var defaultContent = new TextBlock();
            var host           = new RoutedViewHost
            {
                Router         = screen.Router,
                DefaultContent = defaultContent,
                PageTransition = null
            };

            var root = new TestRoot
            {
                Child = host
            };

            Assert.NotNull(host.Content);
            Assert.IsType <TextBlock>(host.Content);
            Assert.Equal(defaultContent, host.Content);

            var first = new FirstRoutableViewModel();

            screen.Router.Navigate.Execute(first).Subscribe();

            host.ViewContract = null;
            Assert.NotNull(host.Content);
            Assert.IsType <FirstRoutableView>(host.Content);
            Assert.Equal(first, ((FirstRoutableView)host.Content).DataContext);
            Assert.Equal(first, ((FirstRoutableView)host.Content).ViewModel);

            host.ViewContract = AlternativeViewContract;
            Assert.NotNull(host.Content);
            Assert.IsType <AlternativeFirstRoutableView>(host.Content);
            Assert.Equal(first, ((AlternativeFirstRoutableView)host.Content).DataContext);
            Assert.Equal(first, ((AlternativeFirstRoutableView)host.Content).ViewModel);

            var second = new SecondRoutableViewModel();

            screen.Router.Navigate.Execute(second).Subscribe();

            host.ViewContract = null;
            Assert.NotNull(host.Content);
            Assert.IsType <SecondRoutableView>(host.Content);
            Assert.Equal(second, ((SecondRoutableView)host.Content).DataContext);
            Assert.Equal(second, ((SecondRoutableView)host.Content).ViewModel);

            host.ViewContract = AlternativeViewContract;
            Assert.NotNull(host.Content);
            Assert.IsType <AlternativeSecondRoutableView>(host.Content);
            Assert.Equal(second, ((AlternativeSecondRoutableView)host.Content).DataContext);
            Assert.Equal(second, ((AlternativeSecondRoutableView)host.Content).ViewModel);

            screen.Router.NavigateBack.Execute(Unit.Default).Subscribe();

            Assert.NotNull(host.Content);
            Assert.IsType <AlternativeFirstRoutableView>(host.Content);
            Assert.Equal(first, ((AlternativeFirstRoutableView)host.Content).DataContext);
            Assert.Equal(first, ((AlternativeFirstRoutableView)host.Content).ViewModel);

            screen.Router.NavigateBack.Execute(Unit.Default).Subscribe();

            Assert.NotNull(host.Content);
            Assert.IsType <TextBlock>(host.Content);
            Assert.Equal(defaultContent, host.Content);
        }