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_Getter_Observes_instance_StringProperty_AutoActivateTrue() { var instance = new NotifyPropertyChangedClass1() { StringProperty = null }; var callCount = 0; using var observes = PropertyReferenceObserver.ObservesAndGet(() => instance.StringProperty, true, () => 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); observes.Deactivate(); Assert.AreEqual(2, callCount); Assert.AreEqual("2", observes.Value); instance.StringProperty = "3"; Assert.AreEqual(2, callCount); Assert.AreEqual("3", observes.Value); instance.StringProperty = null; Assert.AreEqual(2, callCount); Assert.AreEqual(null, 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_ValueGetter_Observes_instance1_StringProperty_AutoActivateFalse() { var instance1 = new NotifyPropertyChangedClass1 { StringProperty = null }; var instance2 = new NotifyPropertyChangedClass1(); var callCount = 0; var value = "Nil"; using var observes = PropertyReferenceObserver.Observes( instance1, instance2, (i1, i2) => i1.StringProperty, false, v => { value = v; callCount++; }); Assert.AreEqual(0, callCount); Assert.AreEqual("Nil", value); Assert.AreEqual(null, observes.Value); instance1.StringProperty = "1"; Assert.AreEqual(0, callCount); Assert.AreEqual("Nil", value); Assert.AreEqual("1", observes.Value); observes.Activate(); Assert.AreEqual(1, callCount); Assert.AreEqual("1", value); Assert.AreEqual("1", observes.Value); instance1.StringProperty = "2"; Assert.AreEqual(2, callCount); Assert.AreEqual("2", value); Assert.AreEqual("2", observes.Value); observes.Deactivate(); Assert.AreEqual(2, callCount); Assert.AreEqual("2", value); Assert.AreEqual("2", observes.Value); instance1.StringProperty = "3"; Assert.AreEqual(2, callCount); Assert.AreEqual("2", value); Assert.AreEqual("3", observes.Value); instance1.StringProperty = null; Assert.AreEqual(2, callCount); Assert.AreEqual("2", value); Assert.AreEqual(null, observes.Value); }
public void PropertyObserver_ValueGetter_Observes_instance_StringProperty() { var instance = new NotifyPropertyChangedClass1() { StringProperty = null }; var callCount = 0; var value = "Nil"; using var observes = PropertyReferenceObserver.Observes(() => instance.StringProperty, (v) => { value = v; callCount++; }); Assert.AreEqual(0, callCount); Assert.AreEqual("Nil", value); Assert.AreEqual(null, observes.Value); instance.StringProperty = "1"; Assert.AreEqual(0, callCount); Assert.AreEqual("Nil", value); Assert.AreEqual("1", observes.Value); observes.Activate(); Assert.AreEqual(1, callCount); Assert.AreEqual("1", value); Assert.AreEqual("1", observes.Value); instance.StringProperty = "2"; Assert.AreEqual(2, callCount); Assert.AreEqual("2", value); Assert.AreEqual("2", observes.Value); observes.Deactivate(); Assert.AreEqual(2, callCount); Assert.AreEqual("2", value); Assert.AreEqual("2", observes.Value); instance.StringProperty = "3"; Assert.AreEqual(2, callCount); Assert.AreEqual("2", value); Assert.AreEqual("3", observes.Value); instance.StringProperty = null; Assert.AreEqual(2, callCount); Assert.AreEqual("2", value); Assert.AreEqual(null, 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); }
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); }
public void PropertyObserver_Getter_Observes_instance1_StringProperty() { var instance1 = new NotifyPropertyChangedClass1 { StringProperty = null }; var instance2 = new NotifyPropertyChangedClass1(); var callCount = 0; using var observes = PropertyReferenceObserver.ObservesAndGet( instance1, instance2, (i1, i2) => i1.StringProperty, () => callCount++); Assert.AreEqual(0, callCount); Assert.AreEqual(null, observes.Value); instance1.StringProperty = "1"; Assert.AreEqual(0, callCount); Assert.AreEqual("1", 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); observes.Deactivate(); Assert.AreEqual(2, callCount); Assert.AreEqual("2", observes.Value); instance1.StringProperty = "3"; Assert.AreEqual(2, callCount); Assert.AreEqual("3", observes.Value); instance1.StringProperty = null; Assert.AreEqual(2, callCount); Assert.AreEqual(null, observes.Value); }