public void PropertyObserver_OnNotifyProperyChanged_Observes_instance_StringProperty_AutoActivateFalse() { var instance = new NotifyPropertyChangedClass1(); var callCount = 0; using var observes = PropertyReferenceObserver.ObservesOnNotifyProperyChanged(() => instance.StringProperty, false); observes.PropertyChanged += (sender, args) => callCount++; Assert.AreEqual(0, callCount); Assert.AreEqual(null, observes.Value); instance.StringProperty = "1"; Assert.AreEqual(0, callCount); Assert.AreEqual("1", 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("3", observes.Value); }
public void PropertyObserver_OnNotifyProperyChanged_Observes_instance_StringProperty_Cashed_TaskSchedulerCurrent_AutoActivateTrue() { var instance = new NotifyPropertyChangedClass1(); var callCount = 0; using var observes = PropertyReferenceObserver.ObservesOnNotifyProperyChanged(() => instance.StringProperty, true, LazyThreadSafetyMode.None, 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); }
public void PropertyObserver_OnNotifyProperyChanged_Observes_instance1_StringProperty_Cashed_AutoActivateFalse() { var instance1 = new NotifyPropertyChangedClass1(); var instance2 = new NotifyPropertyChangedClass1(); var callCount = 0; using var observes = PropertyReferenceObserver.ObservesOnNotifyProperyChanged( instance1, instance2, (i1, i2) => i1.StringProperty, true, LazyThreadSafetyMode.None, 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); }