public void FailCancelsReadTasks() { var sut = new BufferedChannel <int>(0); var task1 = sut.TryReadAsync(); var task2 = sut.TryReadAsync(); sut.Terminate(new InvalidOperationException()); Should.Throw <InvalidOperationException>(task1.AsTask(), Timeout1Sec); Should.Throw <InvalidOperationException>(task2.AsTask(), Timeout1Sec); }
public void CancellationCancelsReadTasks() { var sut = new BufferedChannel <int>(0); var task1 = sut.TryReadAsync(); var task2 = sut.TryReadAsync(); sut.Terminate(); Should.Throw <OperationCanceledException>(task1.AsTask(), Timeout1Sec); Should.Throw <OperationCanceledException>(task2.AsTask(), Timeout1Sec); }
public void TerminationCompletesChannelWithException() { var sut = new BufferedChannel <int>(2); sut.TryWrite(1); sut.TryWrite(2); sut.Terminate(new InvalidOperationException()); sut.Completion.IsCompleted.ShouldBe(false); sut.TryRead(out int _).ShouldBe(true); sut.TryRead(out int _).ShouldBe(true); Should.Throw <InvalidOperationException>(() => sut.TryReadAsync().AsTask(), Timeout1Sec); sut.Completion.IsFaulted.ShouldBeTrue(); }
public void CancellationCompletesChannel() { var sut = new BufferedChannel <int>(2); sut.TryWrite(1); sut.TryWrite(2); sut.Terminate(); sut.Completion.IsCompleted.ShouldBe(false); sut.TryRead(out int _).ShouldBe(true); sut.TryRead(out int _).ShouldBe(true); Should.Throw <TaskCanceledException>(sut.TryReadAsync().AsTask(), Timeout1Sec); sut.Completion.IsCanceled.ShouldBeTrue(); }