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); } }
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); } }
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); }
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); }