Exemplo n.º 1
0
        public void TestAdd()
        {
            IReactiveSet <int> source = new ReactiveSet <int>();

            source.Add(3);

            ReactiveSetView <int> view = new ReactiveSetView <int>(source);

            Assert.AreEqual(1, view.Count);
            Assert.AreEqual(3, view[0]);

            source.Add(4);
            Assert.AreEqual(4, view[1]);
        }
Exemplo n.º 2
0
        public void TestChainDispose()
        {
            IReactiveSet <int> source    = new ReactiveSet <int>();
            FilterSet <int>    filtered  = new FilterSet <int>(source, x => x >= 4);
            FilterSet <int>    filtered2 = new FilterSet <int>(filtered, x => x <= 20);
            FilterSet <int>    filtered3 = new FilterSet <int>(filtered2, x => x % 2 == 0);

            source.Add(3);
            source.Add(5);
            source.Add(10);
            source.Add(99);

            Assert.IsFalse(filtered.IsSubscribed);
            Assert.IsFalse(filtered2.IsSubscribed);
            Assert.IsFalse(filtered3.IsSubscribed);

            var view = new ReactiveSetView <int>(filtered3);

            Assert.IsTrue(filtered.IsSubscribed);
            Assert.IsTrue(filtered2.IsSubscribed);
            Assert.IsTrue(filtered3.IsSubscribed);

            Assert.AreEqual(1, view.Count);
            Assert.AreEqual(10, view[0]);

            source.Add(13);

            Assert.AreEqual(1, view.Count);
            Assert.AreEqual(10, view[0]);

            source.Add(16);

            Assert.AreEqual(2, view.Count);
            Assert.AreEqual(10, view[0]);
            Assert.AreEqual(16, view[1]);

            view.Dispose();

            Assert.IsFalse(filtered.IsSubscribed);
            Assert.IsFalse(filtered2.IsSubscribed);
            Assert.IsFalse(filtered3.IsSubscribed);

            view = new ReactiveSetView <int>(filtered2);
            var view2 = new ReactiveSetView <int>(filtered);

            Assert.IsTrue(filtered.IsSubscribed);
            Assert.IsTrue(filtered2.IsSubscribed);
            Assert.IsFalse(filtered3.IsSubscribed);

            CollectionAssert.AreEquivalent(view, new int[] { 5, 10, 13, 16 });
            CollectionAssert.AreEquivalent(view2, new int[] { 5, 10, 13, 16, 99 });
            view.Dispose();

            Assert.IsTrue(filtered.IsSubscribed);
            Assert.IsFalse(filtered2.IsSubscribed);
            Assert.IsFalse(filtered3.IsSubscribed);

            view2.Dispose();

            Assert.IsFalse(filtered.IsSubscribed);
            Assert.IsFalse(filtered2.IsSubscribed);
            Assert.IsFalse(filtered3.IsSubscribed);
        }