コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
            }
        }