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(); }
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]); }
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(); }
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); }