public void PropertyObserver_OnValueChanged_Observes_instance_StringProperty() { var instance = new NotifyPropertyChangedClass1(); var callCount = 0; using var observes = PropertyReferenceObserver.ObservesOnValueChanged(() => instance.StringProperty); observes.PropertyChanged += (sender, args) => callCount++; Assert.AreEqual(0, callCount); Assert.AreEqual(null, observes.Value); instance.StringProperty = "1"; Assert.AreEqual(0, callCount); Assert.AreEqual(null, observes.Value); observes.Activate(); Assert.AreEqual(1, callCount); Assert.AreEqual("1", observes.Value); instance.StringProperty = "2"; Assert.AreEqual(2, callCount); Assert.AreEqual("2", observes.Value); instance.StringProperty = "2"; Assert.AreEqual(2, callCount); Assert.AreEqual("2", observes.Value); observes.Deactivate(); Assert.AreEqual(2, callCount); Assert.AreEqual("2", observes.Value); instance.StringProperty = "3"; Assert.AreEqual(2, callCount); Assert.AreEqual("2", observes.Value); }
public void PropertyObserver_OnValueChanged_Observes_instance_StringProperty_TaskSchedulerCurrent_AutoActivateTrue() { var instance = new NotifyPropertyChangedClass1(); var callCount = 0; using var observes = PropertyReferenceObserver.ObservesOnValueChanged(instance, i => i.StringProperty, TaskScheduler.Current, true); observes.PropertyChanged += (sender, args) => callCount++; Assert.AreEqual(0, callCount); Assert.AreEqual(null, observes.Value); instance.StringProperty = "1"; Assert.AreEqual(1, callCount); Assert.AreEqual("1", observes.Value); instance.StringProperty = "2"; Assert.AreEqual(2, callCount); Assert.AreEqual("2", observes.Value); instance.StringProperty = "2"; Assert.AreEqual(2, callCount); Assert.AreEqual("2", observes.Value); observes.Deactivate(); Assert.AreEqual(2, callCount); Assert.AreEqual("2", observes.Value); instance.StringProperty = "3"; Assert.AreEqual(2, callCount); Assert.AreEqual("2", observes.Value); }
PropertyObserver_OnValueChanged_Observes_instance1_StringProperty_TaskSchedulerCurrent_AutoActivateFalse() { var instance1 = new NotifyPropertyChangedClass1(); var instance2 = new NotifyPropertyChangedClass1(); var callCount = 0; using var observes = PropertyReferenceObserver.ObservesOnValueChanged( instance1, instance2, (i1, i2) => i1.StringProperty, TaskScheduler.Current, false); observes.PropertyChanged += (sender, args) => callCount++; Assert.AreEqual(0, callCount); Assert.AreEqual(null, observes.Value); instance1.StringProperty = "1"; Assert.AreEqual(0, callCount); Assert.AreEqual(null, observes.Value); observes.Activate(); Assert.AreEqual(1, callCount); Assert.AreEqual("1", observes.Value); instance1.StringProperty = "2"; Assert.AreEqual(2, callCount); Assert.AreEqual("2", observes.Value); instance1.StringProperty = "2"; Assert.AreEqual(2, callCount); Assert.AreEqual("2", observes.Value); observes.Deactivate(); Assert.AreEqual(2, callCount); Assert.AreEqual("2", observes.Value); instance1.StringProperty = "3"; Assert.AreEqual(2, callCount); Assert.AreEqual("2", observes.Value); }