Ejemplo n.º 1
0
        public void OnNext_OnError_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.OnError(to, ex, ref wip, ref error);
                });

                to.AssertError(typeof(InvalidOperationException))
                .AssertNotCompleted();

                Assert.True(to.ItemCount <= 1);
            }
        }
Ejemplo n.º 2
0
 public void OnNext(int value)
 {
     parent.consumer.OnNext(value);
     if (errorReenter)
     {
         HalfSerializer.OnError(this, x, ref parent.wip, ref parent.error);
     }
     else
     {
         HalfSerializer.OnCompleted(this, ref parent.wip, ref parent.error);
     }
 }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 4
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);
        }