예제 #1
0
        public void CloseScreen_WhenActivateOfPreviouslyActiveThrowsException_RemovesPreviouslyActiveAndSetsActiveScreenToNull()
        {
            ScreenConductor conductor = CreateScreenConductor();

            OpenNewScreen(conductor);

            ScreenMock previouslyActive = new ScreenMock(Aggregator);

            OpenScreen(conductor, previouslyActive);

            ScreenMock newScreen = new ScreenMock(Aggregator);

            OpenScreen(conductor, newScreen);

            PropertyChangedCounter pc = CreateActiveScreenChangedListener(conductor);

            previouslyActive.ThrowOnActivate = true;

            CloseScreen(conductor, newScreen, false);

            Assert.IsFalse(conductor.Screens.Contains(newScreen));
            Assert.IsFalse(conductor.Screens.Contains(previouslyActive));
            Assert.IsNull(conductor.ActiveScreen);
            pc.AssertOneRaise();
        }
예제 #2
0
        public void OpenScreen_WhenDeactivateThrowsException_AddsScreenAndUpdatesActiveScreen()
        {
            ScreenConductor conductor   = CreateScreenConductor();
            ScreenMock      alreadyOpen = OpenNewScreen(conductor);

            ScreenMock oldScreen = new ScreenMock(Aggregator)
            {
                ThrowOnDeactivate = true
            };

            OpenScreen(conductor, oldScreen);

            PropertyChangedCounter pc = CreateActiveScreenChangedListener(conductor);

            ScreenMock newScreen = new ScreenMock(Aggregator);

            OpenScreen(conductor, newScreen);

            Assert.IsTrue(newScreen.WasInitialized);
            Assert.IsTrue(newScreen.WasActivated);
            Assert.IsTrue(conductor.Screens.Contains(newScreen));
            Assert.AreEqual(newScreen, conductor.ActiveScreen);

            Assert.IsFalse(conductor.Screens.Contains(oldScreen));

            pc.AssertOneRaise();
        }
예제 #3
0
        public void NotifyChange_ForOwnProperty_RaisesPropertyChangedForErrorProperty()
        {
            var counter = new PropertyChangedCounter(VM, "Error");

            VMInterface.NotifyChange(ChangeArgs
                                     .ValidationResultChanged()
                                     .PrependViewModel(VM)
                                     );

            counter.AssertOneRaise();
        }
        public void PropertyChanged_WhenViewModelPropertyIsSetToInvalidVM_IsRaised()
        {
            var counter = new PropertyChangedCounter(Parent, "IsValid");

            Assert.IsTrue(Parent.IsValid);
            Parent.ChildProperty = new ChildVM {
                ValidationResultToReturn = false
            };;
            Assert.IsFalse(Parent.IsValid);

            counter.AssertOneRaise();
        }
        public void PropertyChanged_WhenInvalidItemIsAddedToCollection_IsRaised()
        {
            var counter = new PropertyChangedCounter(Parent, "IsValid");

            Assert.IsTrue(Parent.IsValid);
            Parent.ChildCollection.Add(new ChildVM {
                ValidationResultToReturn = false
            });
            Assert.IsFalse(Parent.IsValid);

            counter.AssertOneRaise();
        }
예제 #6
0
        public void CloseScreen_WhenCloseThrowsException_RemovesScreen()
        {
            ScreenConductor condcutor   = CreateScreenConductor();
            ScreenMock      alreadyOpen = OpenNewScreen(condcutor);

            ScreenMock newScreen = new ScreenMock(Aggregator)
            {
                ThrowOnClose = true
            };

            OpenScreen(condcutor, newScreen);

            PropertyChangedCounter pc = CreateActiveScreenChangedListener(condcutor);

            CloseScreen(condcutor, newScreen, false);

            Assert.IsFalse(condcutor.Screens.Contains(newScreen));
            Assert.AreEqual(alreadyOpen, condcutor.ActiveScreen);
            pc.AssertOneRaise();
        }
예제 #7
0
        public void OpenScreen_WhenActivateThrowsException_DoesNotAddScreenAndSetsActivateScreenToNull()
        {
            ScreenConductor conductor   = CreateScreenConductor();
            ScreenMock      alreadyOpen = OpenNewScreen(conductor);

            PropertyChangedCounter pc = CreateActiveScreenChangedListener(conductor);

            ScreenMock newScreen = new ScreenMock(Aggregator)
            {
                ThrowOnActivate = true
            };

            OpenScreen(conductor, newScreen);

            Assert.IsTrue(newScreen.WasInitialized);
            Assert.IsTrue(newScreen.WasActivated);
            Assert.IsFalse(conductor.Screens.Contains(newScreen));
            Assert.IsNull(conductor.ActiveScreen);
            pc.AssertOneRaise();
        }