public void Basic() { var cs1 = new CompletableSubject(); var cs2 = new CompletableSubject(); var to = cs1 .TakeUntil(cs2) .Test(); Assert.True(cs1.HasObserver()); Assert.True(cs2.HasObserver()); cs1.OnCompleted(); Assert.False(cs1.HasObserver()); Assert.False(cs2.HasObserver()); to.AssertResult(); }
public void Array_Max_Concurrency() { var cs1 = new CompletableSubject(); var cs2 = new CompletableSubject(); var to = CompletableSource.Merge(1, cs1, cs2) .Test(); Assert.True(cs1.HasObserver()); Assert.False(cs2.HasObserver()); cs1.OnCompleted(); Assert.False(cs1.HasObserver()); Assert.True(cs2.HasObserver()); cs2.OnCompleted(); to.AssertResult(); }
public void Race() { for (int i = 0; i < TestHelper.RACE_LOOPS; i++) { var cs1 = new CompletableSubject(); var cs2 = new CompletableSubject(); var to = new[] { cs1, cs2 } .ToObservable() .Merge() .Test(); TestHelper.Race(() => { cs1.OnCompleted(); }, () => { cs2.OnCompleted(); }); to.AssertResult(); } }
public void No_Timeout() { var ts = new TestScheduler(); var us = new CompletableSubject(); var to = us .Timeout(TimeSpan.FromSeconds(1), ts) .Test(); to.AssertEmpty(); ts.AdvanceTimeBy(100); Assert.True(us.HasObserver()); us.OnCompleted(); ts.AdvanceTimeBy(900); to.AssertResult(); }
public void Max_Concurrency() { var cs1 = new CompletableSubject(); var cs2 = new CompletableSubject(); var to = new[] { cs1, cs2 } .ToObservable() .FlatMap(v => v, maxConcurrency: 1) .Test(); Assert.True(cs1.HasObserver()); Assert.False(cs2.HasObserver()); cs1.OnCompleted(); Assert.False(cs1.HasObserver()); Assert.True(cs2.HasObserver()); cs2.OnCompleted(); to.AssertResult(); }
public void Other_Dispose_Other() { var ts = new CompletableSubject(); var cs = new CompletableSubject(); var to = cs .DelaySubscription(ts) .Test(); Assert.False(cs.HasObserver()); ts.OnCompleted(); Assert.True(cs.HasObserver()); to.Dispose(); Assert.False(cs.HasObserver()); to.AssertEmpty(); }
public void Enumerable_Race() { for (int i = 0; i < TestHelper.RACE_LOOPS; i++) { var cs1 = new CompletableSubject(); var cs2 = new CompletableSubject(); var to = CompletableSource.Merge(new List <ICompletableSource>() { cs1, cs2 }) .Test(); TestHelper.Race(() => { cs1.OnCompleted(); }, () => { cs2.OnCompleted(); }); to.AssertResult(); } }
public void Error_Main_Delayed() { var count = 0; var us = new UnicastSubject <int>(); var cs = new CompletableSubject(); var to = us .ConcatMap(v => { if (v == 2) { return(cs); } return(CompletableSource.FromAction(() => count++)); }, true) .Test(); to.AssertEmpty() .AssertSubscribed(); us.OnNext(0); us.OnNext(1); us.OnNext(2); us.OnError(new InvalidOperationException()); Assert.AreEqual(2, count); to.AssertEmpty(); Assert.True(cs.HasObserver()); Assert.AreEqual(2, count); cs.OnCompleted(); to.AssertFailure(typeof(InvalidOperationException)); Assert.AreEqual(2, count); }
public void Basic() { var cs = new CompletableSubject(); Assert.False(cs.HasObservers); Assert.False(cs.HasCompleted()); Assert.False(cs.HasException()); Assert.IsNull(cs.GetException()); var to = cs.Test(); Assert.True(cs.HasObserver()); to.AssertEmpty(); var bd = new BooleanDisposable(); cs.OnSubscribe(bd); cs.OnCompleted(); cs.OnError(new IndexOutOfRangeException()); Assert.True(bd.IsDisposed()); to.AssertResult(); Assert.False(cs.HasObservers); Assert.True(cs.HasCompleted()); Assert.False(cs.HasException()); Assert.IsNull(cs.GetException()); cs.Test().AssertResult(); Assert.False(cs.HasObserver()); Assert.True(cs.HasCompleted()); Assert.False(cs.HasException()); Assert.IsNull(cs.GetException()); }
public void Enumerable_Max_Concurrency() { var cs1 = new CompletableSubject(); var cs2 = new CompletableSubject(); var to = CompletableSource.Merge(new List <ICompletableSource>() { cs1, cs2 }, maxConcurrency: 1) .Test(); Assert.True(cs1.HasObserver()); Assert.False(cs2.HasObserver()); cs1.OnCompleted(); Assert.False(cs1.HasObserver()); Assert.True(cs2.HasObserver()); cs2.OnCompleted(); to.AssertResult(); }
public void Race_Subscribe_Dispose() { for (int i = 0; i < TestHelper.RACE_LOOPS; i++) { var cs = new CompletableSubject(); var to1 = cs.Test(); var to2 = new TestObserver <object>(); TestHelper.Race(() => { to1.Dispose(); }, () => { cs.Subscribe(to2); }); cs.OnCompleted(); to1.AssertEmpty(); to2.AssertResult(); } }
public void Race() { for (int i = 0; i < TestHelper.RACE_LOOPS; i++) { var cs1 = new CompletableSubject(); var cs2 = new CompletableSubject(); var to = CompletableSource.Amb(cs1, cs2).Test(); to.AssertEmpty(); TestHelper.Race(() => { cs1.OnCompleted(); }, () => { cs2.OnCompleted(); }); Assert.False(cs1.HasObserver()); Assert.False(cs2.HasObserver()); to.AssertResult(); } }
public void Observer_Complete_Async() { for (int i = 0; i < TestHelper.RACE_LOOPS; i++) { var cs = new CompletableSubject(); var to = new TestObserver <object>(); var cdl = new CountdownEvent(1); Task.Factory.StartNew(() => { while (!cs.HasObserver()) { ; } cs.OnCompleted(); }); cs.BlockingSubscribe(to); to.AssertResult(); } }
public void Array_Race_MaxConcurrent() { for (int k = 1; k < 4; k++) { for (int i = 0; i < TestHelper.RACE_LOOPS; i++) { var cs1 = new CompletableSubject(); var cs2 = new CompletableSubject(); var to = CompletableSource.Merge(new [] { cs1, cs2 }, maxConcurrency: k) .Test(); TestHelper.Race(() => { cs1.OnCompleted(); }, () => { cs2.OnCompleted(); }); to.AssertResult(); } } }