public void When_Property_Declared_On_Base_Class_Then_OnNext_Changes() { // Arrange var obj = new DerivedTestObservableObject {Age = 100}; var scheduler = new TestScheduler(); var observer = scheduler.CreateObserver<int>(); var expected = new[] { OnNext(000, 100), OnNext(000, 20), }; var sut = obj.WhenValue(x => x.Age); // Act sut.Subscribe(observer); obj.Age = 20; // Assert Assert.AreEqual(expected, observer.Messages); }
public void When_Property_Declared_On_Base_Class_Then_OnNext_Changes() { // Arrange var obj = new DerivedTestObservableObject {Age = 100}; var scheduler = new TestScheduler(); var observer = scheduler.CreateObserver<IPropertyValueChanged<int>>(); var expected = new[] { // Since reflection is used, the PropertyValueChange is typed to the property declaring class not the derived one. // This impacts the test assert as they are IEquatable=false if the TClass types disagree. So make it TestPoco not // DerivedTestPoco. OnNext(000, PropertyValueChanged.CreateWithValue((TestObservableObject) obj, "Age", 100)), OnNext(000, PropertyValueChanged.CreateWithValue((TestObservableObject) obj, "Age", 20)), }; var sut = obj.When(x => x.Age); // Act sut.Subscribe(observer); obj.Age = 20; // Assert Assert.AreEqual(expected, observer.Messages); }