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