public void TestLateGetObservableRefreshesCache()
        {
            var itemA             = new TestClassA();
            var itemB             = new TestClassB();
            var itemC             = new TestClassC();
            var interfaceObserver = new CountObserver <ITestClassA>();
            var itemAObserver     = new CountObserver <TestClassA>();
            var itemBObserver     = new CountObserver <TestClassB>();
            var itemCObserver     = new CountObserver <TestClassC>();

            var demux = new Demultiplexor();

            demux.GetObservable <TestClassA>().Subscribe(itemAObserver);
            demux.GetObservable <TestClassB>().Subscribe(itemBObserver);
            demux.GetObservable <TestClassC>().Subscribe(itemCObserver);

            demux.OnNext(itemA);
            demux.GetObservable <ITestClassA>().Subscribe(interfaceObserver);
            demux.OnNext(itemB);
            demux.OnNext(itemC);

            Assert.AreEqual(2, interfaceObserver.Count);
            Assert.AreEqual(3, itemAObserver.Count);
            Assert.AreEqual(2, itemBObserver.Count);
            Assert.AreEqual(1, itemCObserver.Count);
        }
Example #2
0
        public void DemuxTwo()
        {
            Demultiplexor demux = new Demultiplexor();

            var intObserver = new CountObserver <int>();

            demux.GetObservable <int>().Subscribe(intObserver);

            var stringObserver = new CountObserver <string>();

            demux.GetObservable <string>().Subscribe(stringObserver);

            demux.OnNext(1);
            demux.OnNext(2);
            demux.OnNext(3);

            demux.OnNext("foo");
            demux.OnNext("bar");

            Assert.AreEqual(3, intObserver.Count);
            Assert.AreEqual(2, stringObserver.Count);
        }