コード例 #1
0
        public void OnNext_OnCompleted_Race()
        {
            var ex = new InvalidOperationException();

            for (int i = 0; i < TestHelper.RACE_LOOPS; i++)
            {
                wip   = 0;
                error = null;

                var to = new TestObserver <int>();

                TestHelper.Race(() =>
                {
                    HalfSerializer.OnNext(to, 1, ref wip, ref error);
                },
                                () =>
                {
                    HalfSerializer.OnCompleted(to, ref wip, ref error);
                });

                to.AssertNoError()
                .AssertCompleted();

                Assert.True(to.ItemCount <= 1);
            }
        }
コード例 #2
0
        public void HalfSerializer_OnNext()
        {
            HalfSerializer.OnNext(consumer, 1, ref wip, ref error);

            Assert.Equal(0, wip);
            Assert.Null(error);

            Assert.Equal(1, consumer.items.Count);
            Assert.Equal(1, consumer.items[0]);
            Assert.Equal(0, consumer.done);
            Assert.Null(consumer.exc);
        }
コード例 #3
0
        public void HalfSerializer_OnCompleted()
        {
            HalfSerializer.OnCompleted(consumer, ref wip, ref error);

            Assert.Equal(1, wip);
            Assert.Equal(error, ExceptionHelper.Terminated);

            HalfSerializer.OnNext(consumer, 2, ref wip, ref error);

            Assert.Equal(0, consumer.items.Count);
            Assert.Equal(1, consumer.done);
            Assert.Null(consumer.exc);
        }
コード例 #4
0
        public void HalfSerializer_OnNext_Reentrant_OnCompleted()
        {
            var c = new ReentrantConsumer(this, false);

            HalfSerializer.OnNext(c, 1, ref wip, ref error);

            Assert.Equal(1, wip);
            Assert.Equal(error, ExceptionHelper.Terminated);

            Assert.Equal(1, consumer.items.Count);
            Assert.Equal(1, consumer.items[0]);
            Assert.Equal(1, consumer.done);
            Assert.Null(consumer.exc);
        }
コード例 #5
0
        public void HalfSerializer_OnError()
        {
            var ex = new InvalidOperationException();

            HalfSerializer.OnError(consumer, ex, ref wip, ref error);

            Assert.Equal(1, wip);
            Assert.Equal(error, ExceptionHelper.Terminated);

            HalfSerializer.OnNext(consumer, 2, ref wip, ref error);

            Assert.Equal(0, consumer.items.Count);
            Assert.Equal(0, consumer.done);
            Assert.Equal(ex, consumer.exc);
        }
コード例 #6
0
        public void HalfSerializer_OnCompleted_Ignore_Further_Events()
        {
            HalfSerializer.OnCompleted(consumer, ref wip, ref error);

            Assert.Equal(1, wip);
            Assert.Equal(error, ExceptionHelper.Terminated);

            HalfSerializer.OnNext(consumer, 2, ref wip, ref error);
            var ex2 = new NotSupportedException();

            HalfSerializer.OnError(consumer, ex2, ref wip, ref error);
            HalfSerializer.OnCompleted(consumer, ref wip, ref error);

            Assert.Equal(0, consumer.items.Count);
            Assert.Equal(1, consumer.done);
            Assert.Null(consumer.exc);
        }