public async Task WriteRandom() { var isAborted = false; Action abortRequest = () => isAborted = true; using (var ms1 = new MemoryStream()) { using (var ms2 = new MemoryStream()) { using (var writeOnlyStream = new WriteOnlyResponseStream(abortRequest)) { var random = new Random(); for (var i = 0; i < 10; i++) { var buffer = ArrayPool <byte> .Shared.Rent(random.Next(50000)); random.NextBytes(buffer); await writeOnlyStream.WriteAsync(buffer, 0, buffer.Length).ConfigureAwait(false); await ms1.WriteAsync(buffer, 0, buffer.Length).ConfigureAwait(false); ArrayPool <byte> .Shared.Return(buffer); } await writeOnlyStream.CopyToAsync(ms2).ConfigureAwait(false); ms1.Position = 0; ms2.Position = 0; CompareStreams(ms1, ms2); } } } Assert.True(isAborted); }
public async Task WriteAsync() { var isAborted = false; Action abortRequest = () => isAborted = true; using (var writeOnlyStream = new WriteOnlyResponseStream(abortRequest)) { var buffer = new byte[] { 1, 2, 3, 4, 5 }; await writeOnlyStream.WriteAsync(buffer, 0, buffer.Length).ConfigureAwait(false); var writtenBuffer = await GetBuffer(writeOnlyStream).ConfigureAwait(false); Assert.Equal(buffer, writtenBuffer); } Assert.True(isAborted); }