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 errors_cause_all_subscriptions_to_be_removed() { 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.OnError(new Exception()); Assert.AreEqual(0, subjectA.SubscriptionCount); Assert.AreEqual(0, subjectB.SubscriptionCount); Assert.AreEqual(0, subjectC.SubscriptionCount); Assert.AreEqual(0, subjectD.SubscriptionCount); }
public void errors_cause_all_subscriptions_to_be_removed() { 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.OnError(new Exception()); Assert.AreEqual(0, subjectA.SubscriptionCount); Assert.AreEqual(0, subjectB.SubscriptionCount); Assert.AreEqual(0, subjectC.SubscriptionCount); Assert.AreEqual(0, 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 subscribes_once_when_subscription_is_repeated_within_join() { var subjectA = new StatsSubject <int>(); var subjectB = new StatsSubject <int>(); var stats = new StatsObserver <string>(); Observable.Join( subjectA.And(subjectB).Then((x, y) => (string)null), subjectB.And(subjectA).Then((x, y) => (string)null) ) .Subscribe(stats); Assert.AreEqual(1, subjectA.SubscriptionCount); Assert.AreEqual(1, subjectB.SubscriptionCount); }
public void subscribes_once_when_subscription_is_repeated_within_join() { var subjectA = new StatsSubject<int>(); var subjectB = new StatsSubject<int>(); var stats = new StatsObserver<string>(); Observable.Join( subjectA.And(subjectB).Then((x, y) => (string)null), subjectB.And(subjectA).Then((x, y) => (string)null) ) .Subscribe(stats); Assert.AreEqual(1, subjectA.SubscriptionCount); Assert.AreEqual(1, subjectB.SubscriptionCount); }