Ejemplo n.º 1
0
        public void ChangePropertyAndNotify_ChangeHasAffectedObjects_AffectedObjectsNotified()
        {
            // Setup
            SetObservablePropertyValueDelegate setAction = () => {};

            var mocks       = new MockRepository();
            var observableA = mocks.StrictMock <IObservable>();

            observableA.Expect(o => o.NotifyObservers());
            var observableB = mocks.StrictMock <IObservable>();

            observableB.Expect(o => o.NotifyObservers());

            IObservable[] affectedObjects =
            {
                observableA,
                observableB
            };

            var handler = mocks.StrictMock <IObservablePropertyChangeHandler>();

            handler.Expect(h => h.SetPropertyValueAfterConfirmation(setAction)).Return(affectedObjects);
            mocks.ReplayAll();

            // Call
            PropertyChangeHelper.ChangePropertyAndNotify(setAction, handler);

            // Assert
            mocks.VerifyAll();
        }
Ejemplo n.º 2
0
        public void ChangePropertyAndNotify_WithoutChangeHandler_ThrowsArgumentNullException()
        {
            // Call
            TestDelegate test = () => PropertyChangeHelper.ChangePropertyAndNotify(() => {}, null);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(test);

            Assert.AreEqual("changeHandler", exception.ParamName);
        }
        public void When_PropertyChanged_Suppressed_Then_NotifyPropertyChanged_Does_Not_Fire_PropertyChanged()
        {
            // Arrange
            var eventCount = 0;
            var sut = new PropertyChangeHelper(this);
            sut.PropertyChanged += (sender, args) => ++eventCount;

            // Act
            using (sut.SuppressPropertyChanged())
                sut.NotifyPropertyChanged("Age", "UserData-1");

            // Assert
            Assert.AreEqual(0, eventCount);
        }
        public void When_NotifyPropertyValueChanged_Then_Fires_PropertyChange_On_Event_With_Correct_Values()
        {
            // Arrange
            var propertyChanges = new List<PropertyChangedEventArgsEx>();
            var sut = new PropertyChangeHelper(this);
            sut.PropertyChanged += (sender, args) => propertyChanges.Add((PropertyChangedEventArgsEx) args);
            var expectedPropertyChange = new PropertyChangedEventArgsEx("Age", "UserData-2");

            // Act
            sut.NotifyPropertyChanged("Age", "UserData-2");

            // Assert
            Assert.AreEqual(1, propertyChanges.Count);
            Assert.AreEqual(expectedPropertyChange, propertyChanges[0]);
        }
        public void When_SetPropertyValue_New_Value_Then_Fires_PropertyChanged()
        {
            // Arrange
            var propertyChanges = new List<PropertyChangedEventArgsEx>();
            var sut = new PropertyChangeHelper(this);
            sut.PropertyChanged += (sender, args) => propertyChanges.Add((PropertyChangedEventArgsEx) args);
            var age = 10;
            var expectedPropertyChange = new PropertyChangedEventArgsEx("Age", "UserData-1");

            // Act
            sut.SetPropertyValue(ref age, 17, "Age", "UserData-1");

            // Assert
            Assert.AreEqual(1, propertyChanges.Count);
            Assert.AreEqual(expectedPropertyChange, propertyChanges[0]);
        }
Ejemplo n.º 6
0
        public void ChangePropertyAndNotify_ChangeHasNoAffectedObjects_HandlerUsedForSetAction()
        {
            // Setup
            SetObservablePropertyValueDelegate setAction = () => {};

            var mocks   = new MockRepository();
            var handler = mocks.StrictMock <IObservablePropertyChangeHandler>();

            handler.Expect(h => h.SetPropertyValueAfterConfirmation(setAction)).Return(Enumerable.Empty <IObservable>());
            mocks.ReplayAll();

            // Call
            PropertyChangeHelper.ChangePropertyAndNotify(setAction, handler);

            // Assert
            mocks.VerifyAll();
        }
Ejemplo n.º 7
0
        public void ChangePropertyAndNotify_WithoutPropertySetDelegate_ThrowsArgumentNullException()
        {
            // Setup
            var mocks   = new MockRepository();
            var handler = mocks.Stub <IObservablePropertyChangeHandler>();

            mocks.ReplayAll();

            // Call
            TestDelegate test = () => PropertyChangeHelper.ChangePropertyAndNotify(null, handler);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(test);

            Assert.AreEqual("setPropertyDelegate", exception.ParamName);
            mocks.VerifyAll();
        }
        public void When_SetPropertyValue_Same_Value_Then_Does_Not_Fire_PropertyChanged()
        {
            // Arrange
            var eventCount = 0;
            var sut = new PropertyChangeHelper(this);
            sut.PropertyChanged += (sender, args) => ++eventCount;
            ;
            var age = 10;

            // Act
            sut.SetPropertyValue(ref age, 10, "Age", "UserData-1");

            // Assert
            Assert.AreEqual(0, eventCount);
        }
 /// <summary>
 /// Handles the property change.
 /// </summary>
 /// <param name="setPropertyDelegate">The property change action.</param>
 /// <exception cref="ArgumentNullException">Thrown when <paramref name="setPropertyDelegate"/>
 /// is <c>null</c>.</exception>
 protected void HandleChangeProperty(SetObservablePropertyValueDelegate setPropertyDelegate)
 {
     PropertyChangeHelper.ChangePropertyAndNotify(setPropertyDelegate, propertyChangeHandler);
 }