public void TestComplexSink() { var first = new Source(); var second = new Source(); var sink = new ComplexSink(first, second); var counter = 0; var expectation = 1; Assert.AreEqual("zoo", sink.Complex); new ReactiveExpression <string>(() => sink.Complex).Subscribe(value => ReactiveManagerTest.Const(value, () => counter++)); Assert.AreEqual(expectation, counter); second.Woop = true; Assert.AreEqual(++expectation, counter); Assert.AreEqual("bar", sink.Complex); first.Woop = true; Assert.AreEqual("foo", sink.Complex); Assert.AreEqual(++expectation, counter); second.Woop = false; Assert.AreEqual("foo", sink.Complex); Assert.AreEqual(expectation, counter); second.Woop = true; Assert.AreEqual("foo", sink.Complex); Assert.AreEqual(expectation, counter); first.Woop = false; Assert.AreEqual("bar", sink.Complex); Assert.AreEqual(++expectation, counter); second.Woop = false; Assert.AreEqual("zoo", sink.Complex); Assert.AreEqual(++expectation, counter); sink.Source2 = new Source(); Assert.AreEqual("zoo", sink.Complex); Assert.AreEqual(expectation += NotificationWhenDependentChangesToSameValue, counter); }
public void TestComplexSink() { var first = new Source(); var second = new Source(); var sink = new ComplexSink(first, second); var counter = 0; var expectation = 0; Assert.AreEqual("zoo", sink.Complex); ObservableUtility.FromProperty(() => sink.Complex).Skip(1).Subscribe(value => { counter++; }); Assert.AreEqual(expectation, counter); second.Woop = true; Assert.AreEqual(++expectation, counter); Assert.AreEqual("bar", sink.Complex); first.Woop = true; Assert.AreEqual("foo", sink.Complex); Assert.AreEqual(++expectation, counter); second.Woop = false; Assert.AreEqual("foo", sink.Complex); Assert.AreEqual(expectation, counter); second.Woop = true; Assert.AreEqual("foo", sink.Complex); Assert.AreEqual(expectation, counter); first.Woop = false; Assert.AreEqual("bar", sink.Complex); Assert.AreEqual(++expectation, counter); second.Woop = false; Assert.AreEqual("zoo", sink.Complex); Assert.AreEqual(++expectation, counter); sink.Source2 = new Source(); Assert.AreEqual("zoo", sink.Complex); Assert.AreEqual(expectation += NotificationWhenDependentChangesToSameValue, counter); }
public void TestChangingDependenciesForSinkTrap() { var first = new Source(); first.Woop = true; var second = new Source(); var sink = new ComplexSink(first, second); var counter = 0; var expectation = 1; Assert.AreEqual("foo", sink.Complex); first.Woop = false; new ReactiveExpression <string>(() => sink.Complex).Subscribe(value => counter++); Assert.AreEqual(expectation, counter); second.Woop = true; Assert.AreEqual(expectation += RecordsChangingDependenciesWithoutAccess, counter); }
public void TestChangingDependenciesForSinkTrap() { var first = new Source(); first.Woop = true; var second = new Source(); var sink = new ComplexSink(first, second); var counter = 0; var expectation = 0; Assert.AreEqual("foo", sink.Complex); first.Woop = false; ObservableUtility.FromProperty(() => sink.Complex, false).Subscribe(value => { counter++; }); Assert.AreEqual(expectation, counter); second.Woop = true; Assert.AreEqual(expectation += RecordsChangingDependenciesWithoutAccess, counter); }