Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }