Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }