public async Task StartReadAsyncTest2Async()
        {
            var data   = Enumerable.Range(0, 200).Select(v => (byte)v).ToArray();
            var buffer = new byte[100];
            var Time   = TimeSpan.FromMilliseconds(100);

            using var stream = new PipelineStream();
            await stream.WriteAsync(data, 0, data.Length);

            int ReadBytes = 0;

            using (var TokenSource = new CancellationTokenSource(Time))
                ReadBytes = await stream.ReadAsync(buffer, 0, buffer.Length, TokenSource.Token);
            Assert.AreEqual(buffer.Length, ReadBytes);
            ReadBytes = await stream.ReadAsync(buffer, 0, buffer.Length);

            Assert.AreEqual(buffer.Length, ReadBytes);
            using (var TokenSource = new CancellationTokenSource(Time))
                await Assert.ThrowsExceptionAsync <OperationCanceledException>(
                    () => stream.ReadAsync(buffer, 0, buffer.Length, TokenSource.Token));
            await stream.WriteAsync(data, 0, data.Length);

            Assert.AreEqual(buffer.Length, ReadBytes);
            ReadBytes = await stream.ReadAsync(buffer, 0, buffer.Length);

            Assert.AreEqual(buffer.Length, ReadBytes);
        }
        public async Task CompleteAsyncTestAsync()
        {
            using var Stream = new PipelineStream();
            Assert.AreEqual(0, Stream.Length);
            Assert.IsTrue(Stream.CanRead);
            Assert.IsTrue(Stream.CanWrite);
            var WriteMessage1 = "HELLO";
            await Stream.WriteAsync(Encoding.GetBytes(WriteMessage1));

            await Stream.CompleteAsync();

            await Stream.FlushAsync();

            var ReadCount = Encoding.GetByteCount(WriteMessage1);

            Assert.AreEqual(ReadCount, Stream.Length);
            var ReadBytes = new byte[ReadCount];

            ReadCount = await Stream.ReadAsync(ReadBytes);

            var ReadMessage1 = Encoding.GetString(ReadBytes.AsSpan().Slice(0, ReadCount));

            Assert.AreEqual(WriteMessage1, ReadMessage1);
            Assert.IsTrue(Stream.CanRead);
            Assert.IsFalse(Stream.CanWrite);
            var WriteMessage2 = "HI!";
            await Assert.ThrowsExceptionAsync <InvalidOperationException>(async() => await Stream.WriteAsync(Encoding.GetBytes(WriteMessage2)));
        }
        public async Task StoppedReadAsyncTest2Async()
        {
            var buffer = new byte[100];
            var Time   = TimeSpan.FromMilliseconds(10);

            using var stream      = new PipelineStream();
            using var TokenSource = CreateTokenSource(Time);
            await Assert.ThrowsExceptionAsync <OperationCanceledException>(
                () => stream.ReadAsync(buffer, 0, buffer.Length, TokenSource.Token));
        }