Ejemplo n.º 1
0
        public void subscription_is_added_to_source_after_first_subscription()
        {
            var subject = new StatsSubject <int>();

            var refCount = subject.Publish().RefCount();

            Assert.AreEqual(0, subject.SubscriptionCount);

            refCount.Subscribe(new Subject <int>());
            Assert.AreEqual(1, subject.SubscriptionCount);
        }
Ejemplo n.º 2
0
        public void subscription_is_added_to_source_after_first_subscription()
        {
            var subject = new StatsSubject<int>();

            var refCount = subject.Publish().RefCount();

            Assert.AreEqual(0, subject.SubscriptionCount);

            refCount.Subscribe(new Subject<int>());
            Assert.AreEqual(1, subject.SubscriptionCount);
        }
Ejemplo n.º 3
0
        public void multiple_subscriptions_do_not_cause_subscriptions_to_the_source()
        {
            var subject = new StatsSubject<int>();

            var refCount = subject.Publish().RefCount();

            refCount.Subscribe(new Subject<int>());
            Assert.AreEqual(1, subject.SubscriptionCount);

            refCount.Subscribe(new Subject<int>());
            Assert.AreEqual(1, subject.SubscriptionCount);
        }
Ejemplo n.º 4
0
        public void multiple_subscriptions_do_not_cause_subscriptions_to_the_source()
        {
            var subject = new StatsSubject <int>();

            var refCount = subject.Publish().RefCount();

            refCount.Subscribe(new Subject <int>());
            Assert.AreEqual(1, subject.SubscriptionCount);

            refCount.Subscribe(new Subject <int>());
            Assert.AreEqual(1, subject.SubscriptionCount);
        }
Ejemplo n.º 5
0
        public void subscriptions_is_disposed_after_last_child_susbcription_is_disposed()
        {
            var subject = new StatsSubject<int>();

            var refCount = subject.Publish().RefCount();

            var subscriptionA = refCount.Subscribe(new Subject<int>());
            var subscriptionB = refCount.Subscribe(new Subject<int>());

            Assert.AreEqual(1, subject.SubscriptionCount);

            subscriptionA.Dispose();
            Assert.AreEqual(1, subject.SubscriptionCount);

            subscriptionB.Dispose();
            Assert.AreEqual(0, subject.SubscriptionCount);
        }
Ejemplo n.º 6
0
        public void values_are_received_by_all_subscriptions()
        {
            var subject = new StatsSubject <int>();

            var statsA = new StatsObserver <int>();
            var statsB = new StatsObserver <int>();

            var refCount = subject.Publish().RefCount();

            var subscriptionA = refCount.Subscribe(statsA);
            var subscriptionB = refCount.Subscribe(statsB);

            subject.OnNext(0);

            Assert.AreEqual(1, statsA.NextCount);
            Assert.AreEqual(1, statsB.NextCount);
        }
Ejemplo n.º 7
0
        public void subscriptions_is_disposed_after_last_child_susbcription_is_disposed()
        {
            var subject = new StatsSubject <int>();

            var refCount = subject.Publish().RefCount();

            var subscriptionA = refCount.Subscribe(new Subject <int>());
            var subscriptionB = refCount.Subscribe(new Subject <int>());

            Assert.AreEqual(1, subject.SubscriptionCount);

            subscriptionA.Dispose();
            Assert.AreEqual(1, subject.SubscriptionCount);

            subscriptionB.Dispose();
            Assert.AreEqual(0, subject.SubscriptionCount);
        }
Ejemplo n.º 8
0
        public void errors_cause_unsubscription_of_everything()
        {
            var subject = new StatsSubject<int>();

            var statsA = new StatsObserver<int>();
            var statsB = new StatsObserver<int>();

            var refCount = subject.Publish().RefCount();

            var subscriptionA = refCount.Subscribe(statsA);
            var subscriptionB = refCount.Subscribe(statsB);

            subject.OnError(new Exception());

            Assert.AreEqual(1, statsA.ErrorCount);
            Assert.AreEqual(1, statsB.ErrorCount);
            Assert.AreEqual(0, subject.SubscriptionCount);
        }
Ejemplo n.º 9
0
        public void errors_cause_unsubscription_of_everything()
        {
            var subject = new StatsSubject <int>();

            var statsA = new StatsObserver <int>();
            var statsB = new StatsObserver <int>();

            var refCount = subject.Publish().RefCount();

            var subscriptionA = refCount.Subscribe(statsA);
            var subscriptionB = refCount.Subscribe(statsB);

            subject.OnError(new Exception());

            Assert.AreEqual(1, statsA.ErrorCount);
            Assert.AreEqual(1, statsB.ErrorCount);
            Assert.AreEqual(0, subject.SubscriptionCount);
        }
Ejemplo n.º 10
0
        public void values_are_not_received_by_unsubscribed_observers()
        {
            var subject = new StatsSubject<int>();

            var statsA = new StatsObserver<int>();
            var statsB = new StatsObserver<int>();

            var refCount = subject.Publish().RefCount();

            var subscriptionA = refCount.Subscribe(statsA);
            refCount.Subscribe(statsB).Dispose();

            subject.OnNext(0);

            Assert.AreEqual(1, statsA.NextCount);
            Assert.AreEqual(0, statsB.NextCount);
        }