コード例 #1
0
 public override void OnNext(TSource value)
 {
     if (_forward)
     {
         HalfSerializer.ForwardOnNext(this, value, ref _halfSerializer, ref _error);
     }
 }
コード例 #2
0
        public void HalfSerializer_OnNext()
        {
            HalfSerializer.ForwardOnNext(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_OnNext()
        {
            HalfSerializer.ForwardOnNext(_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);
        }
コード例 #4
0
        public void HalfSerializer_OnCompleted()
        {
            HalfSerializer.ForwardOnCompleted(_consumer, ref _wip, ref _error);

            Assert.Equal(1, _wip);
            Assert.Equal(_error, ExceptionHelper.Terminated);

            HalfSerializer.ForwardOnNext(_consumer, 2, ref _wip, ref _error);

            Assert.Equal(0, _consumer.Items.Count);
            Assert.Equal(1, _consumer.Done);
            Assert.Null(_consumer.Exc);
        }
コード例 #5
0
        public void HalfSerializer_OnCompleted()
        {
            HalfSerializer.ForwardOnCompleted(consumer, ref wip, ref error);

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

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

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

            HalfSerializer.ForwardOnNext(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);
        }
コード例 #7
0
        public void HalfSerializer_OnNext_Reentrant_Error()
        {
            var c = new ReentrantConsumer(this, true);

            HalfSerializer.ForwardOnNext(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(0, consumer.done);
            Assert.Equal(c.x, consumer.exc);
        }
コード例 #8
0
        public void HalfSerializer_OnError()
        {
            var ex = new InvalidOperationException();

            HalfSerializer.ForwardOnError(_consumer, ex, ref _wip, ref _error);

            Assert.Equal(1, _wip);
            Assert.Equal(_error, ExceptionHelper.Terminated);

            HalfSerializer.ForwardOnNext(_consumer, 2, ref _wip, ref _error);

            Assert.Equal(0, _consumer.Items.Count);
            Assert.Equal(0, _consumer.Done);
            Assert.Equal(ex, _consumer.Exc);
        }
コード例 #9
0
        public void HalfSerializer_OnError()
        {
            var ex = new InvalidOperationException();

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

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

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

            Assert.Equal(0, consumer.items.Count);
            Assert.Equal(0, consumer.done);
            Assert.Equal(ex, consumer.exc);
        }
コード例 #10
0
        public void HalfSerializer_OnCompleted_Ignore_Further_Events()
        {
            HalfSerializer.ForwardOnCompleted(_consumer, ref _wip, ref _error);

            Assert.Equal(1, _wip);
            Assert.Equal(_error, ExceptionHelper.Terminated);

            HalfSerializer.ForwardOnNext(_consumer, 2, ref _wip, ref _error);
            var ex2 = new NotSupportedException();

            HalfSerializer.ForwardOnError(_consumer, ex2, ref _wip, ref _error);
            HalfSerializer.ForwardOnCompleted(_consumer, ref _wip, ref _error);

            Assert.Equal(0, _consumer.Items.Count);
            Assert.Equal(1, _consumer.Done);
            Assert.Null(_consumer.Exc);
        }
コード例 #11
0
        public void HalfSerializer_OnError_Ignore_Further_Events()
        {
            var ex = new InvalidOperationException();

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

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

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

            HalfSerializer.ForwardOnError(consumer, ex2, ref wip, ref error);
            HalfSerializer.ForwardOnCompleted(consumer, ref wip, ref error);

            Assert.Equal(0, consumer.items.Count);
            Assert.Equal(0, consumer.done);
            Assert.Equal(ex, consumer.exc);
        }
コード例 #12
0
 public void OnNext(T value)
 {
     HalfSerializer.ForwardOnNext(this, value, ref _halfSerializer, ref _error);
 }