public async Task WritesCanBeCanceledViaProvidedCancellationToken() { var writeOnlyStream = new WriteOnlyPipeStream(new HangingPipeWriter()); var pipeWriter = new StreamPipeWriter(writeOnlyStream); var cts = new CancellationTokenSource(1); await Assert.ThrowsAsync <TaskCanceledException>(async() => await pipeWriter.WriteAsync(new byte[1], cts.Token)); }
public async Task WriteCanBeCanceledViaCancelPendingFlushWhenFlushIsAsync() { var writeOnlyStream = new WriteOnlyPipeStream(new HangingPipeWriter()); var pipeWriter = new StreamPipeWriter(writeOnlyStream); FlushResult flushResult = new FlushResult(); var tcs = new TaskCompletionSource <int>(TaskCreationOptions.RunContinuationsAsynchronously); var task = Task.Run(async() => { try { var writingTask = pipeWriter.WriteAsync(new byte[1]); tcs.SetResult(0); flushResult = await writingTask; } catch (Exception ex) { Console.WriteLine(ex.Message); throw ex; } }); await tcs.Task; pipeWriter.CancelPendingFlush(); await task; Assert.True(flushResult.IsCanceled); }
public void FlushAsyncIsCalledFromCallingFlush() { var pipeWriter = new Mock <PipeWriter>(); var stream = new WriteOnlyPipeStream(pipeWriter.Object); stream.Flush(); pipeWriter.Verify(m => m.FlushAsync(default));
public async Task CheckBasicWritePipeApi() { var pipe = new Pipe(); var writeOnlyStream = new WriteOnlyPipeStream(pipe.Writer); var pipeWriter = new StreamPipeWriter(writeOnlyStream); await pipeWriter.WriteAsync(new byte[10]); var res = await pipe.Reader.ReadAsync(); Assert.Equal(new byte[10], res.Buffer.ToArray()); }
public async Task CheckBasicWriteStreamApi() { var stream = new MemoryStream(); var pipeWriter = new StreamPipeWriter(stream); var writeOnlyStream = new WriteOnlyPipeStream(pipeWriter); await writeOnlyStream.WriteAsync(new byte[10]); stream.Position = 0; var res = await ReadFromStreamAsByteArrayAsync(10, stream); Assert.Equal(new byte[10], res); }
public async Task CheckNestedPipeApi() { var pipe = new Pipe(); var writer = pipe.Writer; for (var i = 0; i < 3; i++) { var writeOnlyStream = new WriteOnlyPipeStream(writer); writer = new StreamPipeWriter(writeOnlyStream); } await writer.WriteAsync(new byte[10]); var res = await pipe.Reader.ReadAsync(); Assert.Equal(new byte[10], res.Buffer.ToArray()); }
public async Task CheckNestedStreamApi() { var stream = new MemoryStream(); Stream writeOnlyStream = stream; for (var i = 0; i < 3; i++) { var pipeWriter = new StreamPipeWriter(writeOnlyStream); writeOnlyStream = new WriteOnlyPipeStream(pipeWriter); } await writeOnlyStream.WriteAsync(new byte[10]); stream.Position = 0; var res = await ReadFromStreamAsByteArrayAsync(10, stream); Assert.Equal(new byte[10], res); }
public PipeStreamTest() { Pipe = new Pipe(); ReadingStream = new ReadOnlyPipeStream(Reader); WritingStream = new WriteOnlyPipeStream(Writer); }