コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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();
        }