public void ObservableExpressionCallsTest() { CallsTestElement element = new CallsTestElement(); element.Value = 1; Assert.AreEqual(0, element.ValueGetterCallsCount); Assert.AreEqual(1, element.ValueSetterCallsCount); ObservableExpression observer = new ObservableExpression(element, "Value"); Assert.AreEqual(1, element.ValueGetterCallsCount); Assert.AreEqual(1, element.ValueSetterCallsCount); Assert.AreEqual(1, observer.Value); Assert.IsTrue(observer.TrySetValue(2)); Assert.AreEqual(2, element.ValueGetterCallsCount); Assert.AreEqual(2, element.ValueSetterCallsCount); Assert.AreEqual(2, observer.Value); Assert.IsTrue(observer.TrySetValue(2)); Assert.AreEqual(2, element.ValueGetterCallsCount); Assert.AreEqual(2, element.ValueSetterCallsCount); Assert.AreEqual(2, observer.Value); Assert.IsTrue(observer.TrySetValue(3)); Assert.AreEqual(3, element.ValueGetterCallsCount); Assert.AreEqual(3, element.ValueSetterCallsCount); Assert.AreEqual(3, observer.Value); }
public void ObservableExpressionDependencyPropertyTest() { DependencyObjectNode child1 = new DependencyObjectNode { Value_ClrWrapper = 1 }; DependencyObjectNode child2 = new DependencyObjectNode { Value_ClrWrapper = 2 }; DependencyObjectNode root = new DependencyObjectNode { Value_ClrWrapper = 0 }; int valueChangedCount = 0; ObservableExpression observableExpression = new ObservableExpression(root, "Child.Value"); observableExpression.ValueChanged += (sender, e) => valueChangedCount++; Assert.AreEqual(ObservableValue.UnsetValue, observableExpression.Value); root.Child_ClrWrapper = child1; Assert.AreEqual(1, observableExpression.Value); Assert.AreEqual(1, valueChangedCount); child1.Value_ClrWrapper = 2; Assert.AreEqual(2, observableExpression.Value); Assert.AreEqual(2, valueChangedCount); root.Child_ClrWrapper = child2; Assert.AreEqual(2, observableExpression.Value); Assert.AreEqual(2, valueChangedCount); child1.Value_ClrWrapper = 3; Assert.AreEqual(2, observableExpression.Value); Assert.AreEqual(2, valueChangedCount); child2.Value_ClrWrapper = 3; Assert.AreEqual(3, observableExpression.Value); Assert.AreEqual(3, valueChangedCount); Assert.AreEqual(true, observableExpression.TrySetValue(4)); Assert.AreEqual(3, child1.Value_ClrWrapper); Assert.AreEqual(4, child2.Value_ClrWrapper); Assert.AreEqual(4, valueChangedCount); root.Child_ClrWrapper = null; Assert.AreEqual(ObservableValue.UnsetValue, observableExpression.Value); Assert.AreEqual(5, valueChangedCount); observableExpression.Dispose(); root.Child_ClrWrapper = child1; Assert.AreEqual(5, valueChangedCount); }
public void ObservableExpressionClrPropertyTest() { ObservableNode child1 = new ObservableNode { Value = 1 }; ObservableNode child2 = new ObservableNode { Value = 2 }; ObservableNode root = new ObservableNode { Value = 0 }; int valueChangedCount = 0; ObservableExpression observableExpression = new ObservableExpression(root, "Child.Value"); observableExpression.ValueChanged += (sender, oldValue, newValue) => valueChangedCount++; Assert.AreEqual(ObservableValue.UnsetValue, observableExpression.Value); root.Child = child1; Assert.AreEqual(1, observableExpression.Value); Assert.AreEqual(1, valueChangedCount); child1.Value = 2; Assert.AreEqual(2, observableExpression.Value); Assert.AreEqual(2, valueChangedCount); root.Child = child2; Assert.AreEqual(2, observableExpression.Value); Assert.AreEqual(2, valueChangedCount); child1.Value = 3; Assert.AreEqual(2, observableExpression.Value); Assert.AreEqual(2, valueChangedCount); child2.Value = 3; Assert.AreEqual(3, observableExpression.Value); Assert.AreEqual(3, valueChangedCount); Assert.AreEqual(true, observableExpression.TrySetValue(4)); Assert.AreEqual(3, child1.Value); Assert.AreEqual(4, child2.Value); Assert.AreEqual(4, valueChangedCount); root.Child = null; Assert.AreEqual(ObservableValue.UnsetValue, observableExpression.Value); Assert.AreEqual(5, valueChangedCount); observableExpression.Dispose(); root.Child = child1; Assert.AreEqual(5, valueChangedCount); }