示例#1
0
        public async Task Push_And_Prepare_Model(string stringValue)
        {
            var container = new Container();
            var app       = new Application();

            ZeroApp
            .On(app)
            .WithContainer(DryIocZeroContainer.Build(container))
            .RegisterShell(() => new FirstShell())
            .Start();

            var firstViewModel  = container.Resolve <FirstViewModel>();
            var secondViewModel = container.Resolve <SecondViewModel>();

            var secondViewModelPageBeforePush          = secondViewModel.CurrentPage;
            var secondViewModelPreviousModelBeforePush = secondViewModel.PreviousModel;

            Assert.IsNull(secondViewModelPageBeforePush);
            Assert.IsNull(secondViewModelPreviousModelBeforePush);
            Assert.IsNull(secondViewModel.SecondStringProperty);

            await firstViewModel.Push <SecondPage>(stringValue);

            var secondViewModelPageAfterPush          = secondViewModel.CurrentPage;
            var secondViewModelPreviousModelAfterPush = secondViewModel.PreviousModel;

            Assert.IsNotNull(secondViewModelPageAfterPush);
            Assert.IsNotNull(secondViewModelPreviousModelAfterPush);
            Assert.AreEqual(secondViewModelPageAfterPush.GetType(), typeof(SecondPage));
            Assert.AreEqual(secondViewModelPreviousModelAfterPush.GetType(), typeof(FirstViewModel));
            Assert.AreEqual(firstViewModel, secondViewModel.PreviousModel);
            Assert.IsNotNull(secondViewModel.SecondStringProperty);
            Assert.AreEqual(stringValue, secondViewModel.SecondStringProperty);
        }
示例#2
0
        public void ShellPagedViewModel_Markup_Returns_ActualViewModel()
        {
            var container = new Container();
            var app       = new Application();

            ZeroApp
            .On(app)
            .WithContainer(DryIocZeroContainer.Build(container))
            .RegisterShell(() => new FirstShell())
            .Start();

            var firstPage = container.Resolve <FirstPage>();

            var markup = new ShellPagedViewModelMarkup()
            {
                ViewModel = typeof(FirstViewModel),
                Page      = firstPage
            };

            var provider = new XamlServiceProvider();

            var vmValue = (FirstViewModel)markup.ProvideValue(provider);

            Assert.AreEqual(typeof(FirstViewModel), vmValue.GetType());
            Assert.AreEqual(vmValue, container.Resolve <FirstViewModel>());
        }
示例#3
0
        public void SetUp()
        {
            Xamarin.Forms.Mocks.MockForms.Init();

            this._container = new Container();
            this._app       = new Application();

            ZeroApp
            .On(this._app)
            .WithContainer(DryIocZeroContainer.Build(this._container))
            .RegisterShell(() => new FirstShell())
            .Start();
        }
示例#4
0
        public void Test_ViewModels_ShellService_And_MessagingCenter_Are_Registered_On_Startup()
        {
            var container = new Container();
            var app       = new Application();

            ZeroApp
            .On(app)
            .WithContainer(DryIocZeroContainer.Build(container))
            .RegisterShell(() => new FirstShell())
            .Start();

            var firstViewModel  = container.Resolve <FirstViewModel>();
            var secondViewModel = container.Resolve <SecondViewModel>();

            var shellService    = container.Resolve <IShellService>();
            var messagingCenter = container.Resolve <IMessagingCenter>();

            Assert.NotNull(firstViewModel);
            Assert.NotNull(secondViewModel);
            Assert.NotNull(shellService);
            Assert.NotNull(messagingCenter);
        }
示例#5
0
        public async Task Pop_And_ReversePrepare_Model(string stringValue)
        {
            var container = new Container();
            var app       = new Application();

            ZeroApp
            .On(app)
            .WithContainer(DryIocZeroContainer.Build(container))
            .RegisterShell(() => new FirstShell())
            .Start();

            var firstViewModel  = container.Resolve <FirstViewModel>();
            var secondViewModel = container.Resolve <SecondViewModel>();

            Assert.AreEqual(firstViewModel.CurrentPage.GetType(), typeof(FirstPage));
            Assert.IsNull(secondViewModel.CurrentPage);

            Assert.AreEqual(firstViewModel.CurrentPage.Navigation.NavigationStack.Count, 1);

            await firstViewModel.Push <SecondPage>();

            Assert.AreEqual(firstViewModel.CurrentPage.Navigation.NavigationStack.Count, 2);

            Assert.AreEqual(firstViewModel.CurrentPage.GetType(), typeof(FirstPage));
            Assert.AreEqual(secondViewModel.CurrentPage.GetType(), typeof(SecondPage));

            await secondViewModel.Pop(stringValue);

            Assert.AreEqual(firstViewModel.CurrentPage.Navigation.NavigationStack.Count, 1);

            Assert.AreEqual(firstViewModel.CurrentPage.GetType(), typeof(FirstPage));
            Assert.AreEqual(secondViewModel.CurrentPage.GetType(), typeof(SecondPage));

            Assert.NotNull(firstViewModel.FirstStringProperty);
            Assert.AreEqual(firstViewModel.FirstStringProperty, stringValue);
        }