public void HandleChangeNotificationWithComparer() { var mock = new MockPropertiesWithChangeNotification(); mock.PropertyChanged.Stored(out var propertyChangedEvent); mock.StringProperty.StoredWithChangeNotification(out var prop, propertyChangedEvent, "Test", new StringLengthComparer()); IProperties sut = mock; var updatedProperties = new List <string>(); mock.PropertyChanged.Add((s, e) => { updatedProperties.Add(e.PropertyName); }); // This causes an update as 'Hello' doesn't have the same length as the current value 'Test' sut.StringProperty = "Hello"; // This doesn't cause an update as 'World' has the same length as current value 'Hello'. sut.StringProperty = "World"; // So we'll only see one update Assert.Equal(new[] { "StringProperty" }, updatedProperties); // And the last written value was 'Hello' Assert.Equal("Hello", prop.Value); }
public RaisePropertyChangedEventPropertyStepTests() { _mockProperties = new MockPropertiesWithChangeNotification(); _properties = _mockProperties; _npc = _mockProperties.PropertyChanged.Stored(); ((INotifyPropertyChanged)_mockProperties).PropertyChanged += (sender, args) => { _changedPropertyNames.Add(args.PropertyName); }; }
public void HandleChangeNotificationWithoutComparer() { var mock = new MockPropertiesWithChangeNotification(); mock.PropertyChanged.Stored(out var propertyChangedEvent); mock.StringProperty.StoredWithChangeNotification(propertyChangedEvent); IProperties sut = mock; var updatedProperties = new List <string>(); mock.PropertyChanged.Add((s, e) => { updatedProperties.Add(e.PropertyName); }); sut.StringProperty = "Hello"; Assert.Equal(new[] { "StringProperty" }, updatedProperties); }