public void When_Path_Has_Null_Intermediary_Node_Then_Propagates_ProvertyValueChanged_With_HasValue_False() { // Arrange var childOne = new TestObservableObject {Age = 5}; var childTwo = new TestObservableObject {Age = 17}; var obj = new TestObservableObject {ObservableChild = childOne}; var scheduler = new TestScheduler(); var observer = scheduler.CreateObserver<IPropertyValueChanged<int>>(); var expected = new[] { OnNext(000, PropertyValueChanged.CreateWithValue(childOne, "Age", childOne.Age)), OnNext(000, PropertyValueChanged.CreateWithValue(childOne, "Age", 20)), OnNext(100, PropertyValueChanged.CreateWithoutValue<TestObservableObject, int>(null, "Age")), OnNext(300, PropertyValueChanged.CreateWithValue(childTwo, "Age", childTwo.Age)), }; var sut = obj.When(x => x.ObservableChild.Age); // Act sut.Subscribe(observer); obj.ObservableChild.Age = 20; scheduler.AdvanceTo(100); obj.ObservableChild = null; scheduler.AdvanceTo(300); obj.ObservableChild = childTwo; // Assert Assert.AreEqual(expected, observer.Messages); }
public void When_Subscribe_With_Two_Node_Path_To_Property_And_Modify_Node_One_Then_OnNext_Changes() { // Arrange var childOne = new TestPoco {Age = 3}; var childTwo = new TestPoco() {Age = 5}; var obj = new TestObservableObject {PocoChild = childOne}; var scheduler = new TestScheduler(); var observer = scheduler.CreateObserver<IPropertyValueChanged<int>>(); var expected = new[] { OnNext(000, PropertyValueChanged.CreateWithValue(childOne, "Age", 3)), OnNext(010, PropertyValueChanged.CreateWithValue(childTwo, "Age", 5)), }; var sut = obj.When(x => x.PocoChild.Age); // Act sut.Subscribe(observer); scheduler.AdvanceTo(10); obj.PocoChild = childTwo; // Assert Assert.AreEqual(expected, observer.Messages); }
public void When_Subscribe_Via_Interface_To_Source_That_Impl_INotifyPropertyChanged_Then_OnNext_Changes() { // Arrange var obj = new TestObservableObject {Age = 3} as ITestObject; var scheduler = new TestScheduler(); var observer = scheduler.CreateObserver<IPropertyValueChanged<int>>(); var expected = new[] { OnNext(000, PropertyValueChanged.CreateWithValue(obj, "Age", 3)), OnNext(010, PropertyValueChanged.CreateWithValue(obj, "Age", 5)), }; var sut = obj.When(x => x.Age); // Act sut.Subscribe(observer); scheduler.AdvanceTo(10); obj.Age = 5; // Assert Assert.AreEqual(expected, observer.Messages); }
public void When_Subscribe_With_One_Node_Path_To_Property_Then_OnNext_Changes() { // Arrange var obj = new TestObservableObject {Age = 5}; var scheduler = new TestScheduler(); var observer = scheduler.CreateObserver<IPropertyValueChanged<int>>(); var expected = new[] { OnNext(000, PropertyValueChanged.CreateWithValue(obj, "Age", 5)), }; var sut = obj.When(x => x.Age); // Act sut.Subscribe(observer); // Assert Assert.AreEqual(expected, observer.Messages); }