public void Async_Regular_Error_Delayed() { for (int i = 0; i < 2; i++) { var ts = new TestScheduler(); var subj = new MonocastSubject <int>(); var to = subj.ObserveOn(ts, true, fair: i == 0) .Test() .WithTag($"fair={i == 0}"); Assert.True(subj.HasObservers); to.AssertEmpty(); subj.OnNext(1); subj.OnNext(2); subj.OnError(new InvalidOperationException()); to.AssertEmpty(); ts.AdvanceTimeBy(1); to.AssertFailure(typeof(InvalidOperationException), 1, 2); } }
public void Async_Regular_Error() { for (int i = 0; i < 4; i++) { var ms = new MonocastSubject <int>(); ms.EmitError(new InvalidOperationException()); ms .ObserveOn(reactive_extensions.ImmediateScheduler.INSTANCE, delayError: i / 2 == 0, fair: i % 2 == 0) .Test() .WithTag($"delayError={i / 2}, fair={i % 2}") .AssertFailure(typeof(InvalidOperationException)); } }
public void Async_Regular_Basic() { for (int i = 0; i < 4; i++) { var ms = new MonocastSubject <int>(); ms.EmitAll(1, 2, 3, 4, 5); ms .ObserveOn(reactive_extensions.ImmediateScheduler.INSTANCE, delayError: i / 2 == 0, fair: i % 2 == 0) .Test() .WithTag($"delayError={i / 2}, fair={i % 2}") .AssertResult(1, 2, 3, 4, 5); } }
public void Async_Regular_Async() { for (int i = 0; i < 4; i++) { var name = -1; var ms = new MonocastSubject <int>(); ms.EmitAll(1, 2, 3, 4, 5); ms .ObserveOn(ThreadPoolScheduler.Instance, delayError: i / 2 == 0, fair: i % 2 == 0) .DoOnNext(v => name = Thread.CurrentThread.ManagedThreadId) .Test() .WithTag($"delayError={i / 2}, fair={i % 2}") .AwaitDone(TimeSpan.FromSeconds(5)) .AssertResult(1, 2, 3, 4, 5); Assert.AreNotEqual(-1, name); Assert.AreNotEqual(Thread.CurrentThread.ManagedThreadId, name); } }