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); }
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); }
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); }
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); }
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 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); }
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); }
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); }
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); }
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); }
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); }