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