상속: System.IO.Pipelines.Tests.ThrowAfterNWritesStream
        public async Task EmptyBufferNotWrittenToStream()
        {
            Pipe.Writer.Complete();

            var stream = new ThrowingStream();
            await PipeReader.CopyToAsync(stream);

            PipeReader.Complete();
        }
        public async Task EmptyBufferNotWrittenToStream()
        {
            var pipe = new Pipe(s_testOptions);

            pipe.Writer.Complete();

            var stream = new ThrowingStream();
            await pipe.Reader.CopyToAsync(stream);

            pipe.Reader.Complete();
        }
        public async Task ThrowingFromStreamDoesNotLeavePipeReaderInBrokenState()
        {
            var  stream = new ThrowingStream();
            Task task   = PipeReader.CopyToAsync(stream);

            Pipe.Writer.WriteEmpty(10);
            await Pipe.Writer.FlushAsync();

            await Assert.ThrowsAsync <InvalidOperationException>(() => task);

            Pipe.Writer.WriteEmpty(10);
            await Pipe.Writer.FlushAsync();

            Pipe.Writer.Complete();

            var stream2 = new MemoryStream();
            await PipeReader.CopyToAsync(stream2);

            Assert.Equal(20, stream2.Length);
            PipeReader.Complete();
        }
        public async Task ThrowingFromStreamDoesNotLeavePipeReaderInBrokenState()
        {
            var  pipe   = new Pipe(s_testOptions);
            var  stream = new ThrowingStream();
            Task task   = pipe.Reader.CopyToAsync(stream);

            pipe.Writer.WriteEmpty(10);
            await pipe.Writer.FlushAsync();

            await Assert.ThrowsAsync <InvalidOperationException>(() => task);

            pipe.Writer.WriteEmpty(10);
            await pipe.Writer.FlushAsync();

            pipe.Writer.Complete();

            ReadResult result = await pipe.Reader.ReadAsync();

            Assert.True(result.IsCompleted);
            Assert.Equal(20, result.Buffer.Length);
            pipe.Reader.Complete();
        }