public void OnCompleteInnerFirst() { var src1 = new Subject <int>(); var src2 = new Subject <int>(); var src3 = new Subject <int>(); var src = new ListBehaviorSubject <IObservable <int> >(); var list = new List <int>(); bool completed = false; var sub = src.Switch().Subscribe(change => change.Apply(list), () => completed = true); src.OnAdd(src1); src.OnAdd(src2); src.OnAdd(src3); src1.OnCompleted(); Assert.IsFalse(completed); src3.OnCompleted(); Assert.IsFalse(completed); src2.OnCompleted(); Assert.IsFalse(completed); src.OnCompleted(); Assert.IsTrue(completed); sub.Dispose(); }
public void OnComplete() { var lbs1 = new ListBehaviorSubject <int>(); var lbs2 = new ListBehaviorSubject <int>(); lbs1.OnAdd(1); lbs1.OnAdd(2); lbs2.OnAdd(3); lbs2.OnAdd(4); var source = new BehaviorSubject <IObservableList <int> >(lbs1); var list = new List <int>(); var completed = false; var sub = source .Switch() .Subscribe( Observer.Create <ListChange <int> >( change => change.Apply(list), () => completed = true)); lbs1.OnCompleted(); // Inner completion doesn't imply completion until outer is complete Assert.IsFalse(completed); CollectionAssert.AreEqual(new[] { 1, 2 }, list); source.OnNext(lbs2); CollectionAssert.AreEqual(new[] { 3, 4 }, list); source.OnCompleted(); // Outer completion implies completion when last inner is complete Assert.IsFalse(completed); lbs2.OnCompleted(); Assert.IsTrue(completed); CollectionAssert.AreEqual(new[] { 3, 4 }, list); sub.Dispose(); }
public void Completed2() { var left = new ListBehaviorSubject <int>(); var right = new ListBehaviorSubject <int>(); var list = new List <int>(); bool completed = false; var sub = left.Concat(right) .Subscribe(Observer.Create <ListChange <int> >(change => change.Apply(list), () => completed = true)); right.OnCompleted(); Assert.IsFalse(completed); left.OnCompleted(); Assert.IsTrue(completed); }
public void OnComplete() { var src = new ListBehaviorSubject <int>(); var list = new List <int>(); var completed = false; var sub = src.Where(i => i > 2).Subscribe(change => change.Apply(list), () => completed = true); Assert.IsFalse(completed); src.OnCompleted(); Assert.IsTrue(completed); sub.Dispose(); }
public void Replay_handles_completion() { var lbs = new ListBehaviorSubject <int>(); lbs.OnAdd(1); var replay = lbs.Replay(); lbs.OnAdd(2); var list = new List <int>(); var completed = false; var sub = replay.Subscribe(Observer.Create <ListChange <int> >(change => change.Apply(list), () => completed = true)); CollectionAssert.AreEqual(new int[] { }, list); var conn = replay.Connect(); CollectionAssert.AreEqual(new[] { 1, 2 }, list); Assert.IsFalse(completed); lbs.OnCompleted(); Assert.IsTrue(completed); var list2 = new List <int>(); var completed2 = false; var sub2 = replay.Subscribe(Observer.Create <ListChange <int> >(change => change.Apply(list2), () => completed2 = true)); Assert.IsTrue(completed2); sub2.Dispose(); sub.Dispose(); conn.Dispose(); }