Ejemplo n.º 1
0
        public void completes_when_last_left_window_closes_and_left_source_is_complete()
        {
            left.OnNext(0);
            right.OnNext(0);

            left.OnCompleted();
            Assert.IsFalse(stats.CompletedCalled);

            leftWindows[0].OnCompleted();
            Assert.IsTrue(stats.CompletedCalled);
        }
Ejemplo n.º 2
0
        public void complete_does_not_unsubscribe_from_other_subjects()
        {
            var subjectA = new StatsSubject <int>();
            var subjectB = new StatsSubject <int>();
            var subjectC = new StatsSubject <int>();
            var subjectD = new StatsSubject <int>();

            var stats = new StatsObserver <string>();

            Observable.Join(
                subjectA.And(subjectB).Then((x, y) => x.ToString() + "," + y.ToString()),
                subjectC.And(subjectD).Then((x, y) => x.ToString() + "," + y.ToString())
                )
            .Subscribe(stats);

            Assert.AreEqual(1, subjectA.SubscriptionCount);
            Assert.AreEqual(1, subjectB.SubscriptionCount);
            Assert.AreEqual(1, subjectC.SubscriptionCount);
            Assert.AreEqual(1, subjectD.SubscriptionCount);

            subjectA.OnCompleted();

            Assert.AreEqual(0, subjectA.SubscriptionCount);
            Assert.AreEqual(1, subjectB.SubscriptionCount);
            Assert.AreEqual(1, subjectC.SubscriptionCount);
            Assert.AreEqual(1, subjectD.SubscriptionCount);
        }
Ejemplo n.º 3
0
        public void complete_does_not_unsubscribe_from_other_subjects()
        {
            var subjectA = new StatsSubject<int>();
            var subjectB = new StatsSubject<int>();
            var subjectC = new StatsSubject<int>();
            var subjectD = new StatsSubject<int>();

            var stats = new StatsSubject<string>();

            Observable.Join(
                    subjectA.And(subjectB).Then((x, y) => String.Concat(x.ToString(), ",", y.ToString())),
                    subjectC.And(subjectD).Then((x, y) => String.Concat(x.ToString(), ",", y.ToString()))
                )
                .Subscribe(stats);

            Assert.AreEqual(1, subjectA.SubscriptionCount);
            Assert.AreEqual(1, subjectB.SubscriptionCount);
            Assert.AreEqual(1, subjectC.SubscriptionCount);
            Assert.AreEqual(1, subjectD.SubscriptionCount);

            subjectA.OnCompleted();

            Assert.AreEqual(0, subjectA.SubscriptionCount);
            Assert.AreEqual(0, subjectB.SubscriptionCount);
            Assert.AreEqual(1, subjectC.SubscriptionCount);
            Assert.AreEqual(1, subjectD.SubscriptionCount);
        }
Ejemplo n.º 4
0
        public void unsubscribes_from_both_sequences_when_complete()
        {
            StatsSubject <int> subjectA = new StatsSubject <int>();
            StatsSubject <int> subjectB = new StatsSubject <int>();

            var stats = new StatsObserver <string>();

            subjectA.CombineLatest(subjectB, (a, b) => String.Concat(a.ToString(), ",", b.ToString()))
            .Subscribe(stats);

            subjectA.OnCompleted();
            subjectB.OnCompleted();

            Assert.AreEqual(0, subjectA.SubscriptionCount);
            Assert.AreEqual(0, subjectB.SubscriptionCount);
        }
Ejemplo n.º 5
0
        public void values_send_before_completion_are_ignored()
        {
            StatsObserver <int> stats = new StatsObserver <int>();

            StatsSubject <int> source  = new StatsSubject <int>();
            StatsSubject <int> subject = new StatsSubject <int>();

            ConnectableObservable <int> connectable = new ConnectableObservable <int>(source, subject);

            var sub = connectable.Subscribe(stats);

            source.OnNext(0);
            source.OnCompleted();
            source.OnError(new Exception());

            Assert.IsFalse(stats.NextCalled);
            Assert.IsFalse(stats.CompletedCalled);
            Assert.IsFalse(stats.ErrorCalled);
        }
Ejemplo n.º 6
0
        public void complete_is_fired_when_both_sequences_complete()
        {
            StatsSubject <int> subjectA = new StatsSubject <int>();
            StatsSubject <int> subjectB = new StatsSubject <int>();

            var stats = new StatsObserver <string>();

            subjectA.CombineLatest(subjectB, (a, b) => String.Concat(a.ToString(), ",", b.ToString()))
            .Subscribe(stats);

            subjectA.OnNext(1);
            subjectA.OnCompleted();

            subjectB.OnNext(2);
            subjectB.OnCompleted();

            Assert.AreEqual(1, stats.NextCount);
            Assert.AreEqual("1,2", stats.NextValues[0]);
            Assert.IsTrue(stats.CompletedCalled);
        }
Ejemplo n.º 7
0
        public void complete_is_fired_when_both_sequences_complete()
        {
            StatsSubject<int> subjectA = new StatsSubject<int>();
            StatsSubject<int> subjectB = new StatsSubject<int>();

            var stats = new StatsObserver<string>();

            subjectA.CombineLatest(subjectB, (a, b) => String.Concat(a.ToString(), ",", b.ToString()))
                .Subscribe(stats);

            subjectA.OnNext(1);
            subjectA.OnCompleted();

            subjectB.OnNext(2);
            subjectB.OnCompleted();

            Assert.AreEqual(1, stats.NextCount);
            Assert.AreEqual("1,2", stats.NextValues[0]);
            Assert.IsTrue(stats.CompletedCalled);
        }
Ejemplo n.º 8
0
        public void last_value_is_still_used_after_complete()
        {
            StatsSubject <int> subjectA = new StatsSubject <int>();
            StatsSubject <int> subjectB = new StatsSubject <int>();

            var stats = new StatsObserver <string>();

            subjectA.CombineLatest(subjectB, (a, b) => String.Concat(a.ToString(), ",", b.ToString()))
            .Subscribe(stats);

            subjectA.OnNext(1);
            subjectA.OnCompleted();

            subjectB.OnNext(2);
            subjectB.OnNext(3);

            Assert.AreEqual(2, stats.NextCount);
            Assert.AreEqual("1,2", stats.NextValues[0]);
            Assert.AreEqual("1,3", stats.NextValues[1]);
            Assert.IsFalse(stats.CompletedCalled);
        }
Ejemplo n.º 9
0
        public void operation_order_is_honoured_prior_to_connection()
        {
            StatsObserver <int> stats = new StatsObserver <int>();

            StatsSubject <int> source  = new StatsSubject <int>();
            StatsSubject <int> subject = new StatsSubject <int>();

            ConnectableObservable <int> connectable = new ConnectableObservable <int>(source, subject);

            var sub = connectable.Subscribe(stats);

            source.OnNext(0);
            source.OnCompleted();

            connectable.Connect();

            source.OnNext(1);

            Assert.IsFalse(stats.NextCalled);
            Assert.IsFalse(stats.CompletedCalled);
            Assert.IsFalse(stats.ErrorCalled);
        }
        public void values_send_before_completion_are_ignored()
        {
            StatsObserver<int> stats = new StatsObserver<int>();

            StatsSubject<int> source = new StatsSubject<int>();
            StatsSubject<int> subject = new StatsSubject<int>();

            ConnectableObservable<int> connectable = new ConnectableObservable<int>(source, subject);

            var sub = connectable.Subscribe(stats);

            source.OnNext(0);
            source.OnCompleted();
            source.OnError(new Exception());

            Assert.IsFalse(stats.NextCalled);
            Assert.IsFalse(stats.CompletedCalled);
            Assert.IsFalse(stats.ErrorCalled);
        }
        public void operation_order_is_honoured_prior_to_connection()
        {
            StatsObserver<int> stats = new StatsObserver<int>();

            StatsSubject<int> source = new StatsSubject<int>();
            StatsSubject<int> subject = new StatsSubject<int>();

            ConnectableObservable<int> connectable = new ConnectableObservable<int>(source, subject);

            var sub = connectable.Subscribe(stats);

            source.OnNext(0);
            source.OnCompleted();

            connectable.Connect();

            source.OnNext(1);

            Assert.IsFalse(stats.NextCalled);
            Assert.IsFalse(stats.CompletedCalled);
            Assert.IsFalse(stats.ErrorCalled);
        }
Ejemplo n.º 12
0
        public void last_value_is_still_used_after_complete()
        {
            StatsSubject<int> subjectA = new StatsSubject<int>();
            StatsSubject<int> subjectB = new StatsSubject<int>();

            var stats = new StatsObserver<string>();

            subjectA.CombineLatest(subjectB, (a, b) => String.Concat(a.ToString(), ",", b.ToString()))
                .Subscribe(stats);

            subjectA.OnNext(1);
            subjectA.OnCompleted();

            subjectB.OnNext(2);
            subjectB.OnNext(3);

            Assert.AreEqual(2, stats.NextCount);
            Assert.AreEqual("1,2", stats.NextValues[0]);
            Assert.AreEqual("1,3", stats.NextValues[1]);
            Assert.IsFalse(stats.CompletedCalled);
        }
Ejemplo n.º 13
0
        public void unsubscribes_from_both_sequences_when_complete()
        {
            StatsSubject<int> subjectA = new StatsSubject<int>();
            StatsSubject<int> subjectB = new StatsSubject<int>();

            var stats = new StatsObserver<string>();

            subjectA.CombineLatest(subjectB, (a, b) => String.Concat(a.ToString(), ",", b.ToString()))
                .Subscribe(stats);

            subjectA.OnCompleted();
            subjectB.OnCompleted();

            Assert.AreEqual(0, subjectA.SubscriptionCount);
            Assert.AreEqual(0, subjectB.SubscriptionCount);
        }