示例#1
0
        public void ReadAsStream_GetFromUnbufferedContent_ThrowsAfterReadAsStreamsAsync()
        {
            var content = new MockContent();

            var task = content.ReadAsStreamAsync();

            AssertExtensions.Throws <HttpRequestException>(() => content.ReadAsStream());
        }
示例#2
0
        public async Task ReadAsStream_GetFromBufferedContent_ThrowsAfterReadAsStreamsAsync()
        {
            var content = new MockContent();
            await content.LoadIntoBufferAsync();

            var task = content.ReadAsStreamAsync();

            AssertExtensions.Throws <HttpRequestException>(() => content.ReadAsStream());
        }
示例#3
0
        public void ReadAsStream_Unbuffered_CustomContent_CanBeCanceled()
        {
            var content = new MockContent();

            var cts = new CancellationTokenSource();

            cts.Cancel();

            Assert.Throws <OperationCanceledException>(() => content.ReadAsStream(cts.Token));
        }
示例#4
0
        public async Task ReadAsStreamAsync_GetFromUnbufferedContent_SucceedsAfterReadAsStream()
        {
            var content = new MockContent(MockOptions.CanCalculateLength);

            // Call multiple times: CreateContentReadStream() should be called only once.
            Stream stream = content.ReadAsStream();

            stream = content.ReadAsStream();
            Assert.Equal(1, content.CreateContentReadStreamCount);

            stream = await content.ReadAsStreamAsync();

            stream = await content.ReadAsStreamAsync();

            Assert.Equal(1, content.CreateContentReadStreamCount);
            Assert.Equal(content.GetMockData().Length, stream.Length);
            Stream stream2 = await content.ReadAsStreamAsync();

            Assert.Same(stream, stream2);
        }
示例#5
0
        public void Dispose_DisposedObjectThenAccessMembers_ThrowsObjectDisposedException()
        {
            var content = new MockContent();

            content.Dispose();

            var m = new MemoryStream();

            Assert.Throws <ObjectDisposedException>(() => { content.CopyToAsync(m); });
            Assert.Throws <ObjectDisposedException>(() => { content.CopyTo(m, null, default); });
            Assert.Throws <ObjectDisposedException>(() => { content.ReadAsByteArrayAsync(); });
            Assert.Throws <ObjectDisposedException>(() => { content.ReadAsStringAsync(); });
            Assert.Throws <ObjectDisposedException>(() => { content.ReadAsStreamAsync(); });
            Assert.Throws <ObjectDisposedException>(() => { content.ReadAsStream(); });
            Assert.Throws <ObjectDisposedException>(() => { content.LoadIntoBufferAsync(); });

            // Note that we don't throw when users access the Headers property. This is useful e.g. to be able to
            // read the headers of a content, even though the content is already disposed. Note that the .NET guidelines
            // only require members to throw ObjectDisposedExcpetion for members "that cannot be used after the object
            // has been disposed of".
            _output.WriteLine(content.Headers.ToString());
        }