public void ReadAsStream_GetFromUnbufferedContent_ThrowsAfterReadAsStreamsAsync() { var content = new MockContent(); var task = content.ReadAsStreamAsync(); AssertExtensions.Throws <HttpRequestException>(() => content.ReadAsStream()); }
public async Task ReadAsStream_GetFromBufferedContent_ThrowsAfterReadAsStreamsAsync() { var content = new MockContent(); await content.LoadIntoBufferAsync(); var task = content.ReadAsStreamAsync(); AssertExtensions.Throws <HttpRequestException>(() => content.ReadAsStream()); }
public void ReadAsStream_Unbuffered_CustomContent_CanBeCanceled() { var content = new MockContent(); var cts = new CancellationTokenSource(); cts.Cancel(); Assert.Throws <OperationCanceledException>(() => content.ReadAsStream(cts.Token)); }
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); }
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()); }