public async Task Dispose_GetReadStreamThenDispose_ReadStreamGetsDisposed() { var content = new MockContent(); MockMemoryStream s = (MockMemoryStream)await content.ReadAsStreamAsync(); Assert.Equal(1, content.CreateContentReadStreamCount); Assert.Equal(0, s.DisposeCount); content.Dispose(); Assert.Equal(1, s.DisposeCount); }
public void Dispose_DisposeContentThenAccessContentLength_Throw() { var content = new MockContent(); // This is not really typical usage of the type, but let's make sure we consider also this case: The user // keeps a reference to the Headers property before disposing the content. Then after disposing, the user // accesses the ContentLength property. var headers = content.Headers; content.Dispose(); Assert.Throws <ObjectDisposedException>(() => headers.ContentLength.ToString()); }
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.ReadAsByteArrayAsync(); }); Assert.Throws <ObjectDisposedException>(() => { content.ReadAsStringAsync(); }); Assert.Throws <ObjectDisposedException>(() => { content.ReadAsStreamAsync(); }); 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()); }
public async Task Dispose_DisposedObjectThenAccessMembers_ThrowsObjectDisposedException() { var content = new MockContent(); content.Dispose(); var m = new MemoryStream(); await Assert.ThrowsAsync<ObjectDisposedException>(() => content.CopyToAsync(m)); await Assert.ThrowsAsync<ObjectDisposedException>(() => content.ReadAsByteArrayAsync()); await Assert.ThrowsAsync<ObjectDisposedException>(() => content.ReadAsStringAsync()); await Assert.ThrowsAsync<ObjectDisposedException>(() => content.ReadAsStreamAsync()); await Assert.ThrowsAsync<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()); }
public void Dispose_DisposeContentThenAccessContentLength_Throw() { var content = new MockContent(); // This is not really typical usage of the type, but let's make sure we consider also this case: The user // keeps a reference to the Headers property before disposing the content. Then after disposing, the user // accesses the ContentLength property. var headers = content.Headers; content.Dispose(); Assert.Throws<ObjectDisposedException>(() => headers.ContentLength.ToString()); }
public async Task Dispose_GetReadStreamThenDispose_ReadStreamGetsDisposed() { var content = new MockContent(); MockMemoryStream s = (MockMemoryStream) await content.ReadAsStreamAsync(); Assert.Equal(1, content.CreateContentReadStreamCount); Assert.Equal(0, s.DisposeCount); content.Dispose(); Assert.Equal(1, s.DisposeCount); }