public async Task SynchronousWritesThrowIfDisallowedByIHttpBodyControlFeature() { var allowSynchronousIO = false; var mockBodyControl = new Mock <IHttpBodyControlFeature>(); mockBodyControl.Setup(m => m.AllowSynchronousIO).Returns(() => allowSynchronousIO); var mockHttpResponseControl = new Mock <IHttpResponseControl>(); mockHttpResponseControl.Setup(m => m.WriteAsync(It.IsAny <ArraySegment <byte> >(), CancellationToken.None)).Returns(Task.CompletedTask); var stream = new HttpResponseStream(mockBodyControl.Object, mockHttpResponseControl.Object); stream.StartAcceptingWrites(); // WriteAsync doesn't throw. await stream.WriteAsync(new byte[1], 0, 1); var ioEx = Assert.Throws <InvalidOperationException>(() => stream.Write(new byte[1], 0, 1)); Assert.Equal("Synchronous operations are disallowed. Call WriteAsync or set AllowSynchronousIO to true instead.", ioEx.Message); allowSynchronousIO = true; // If IHttpBodyControlFeature.AllowSynchronousIO is true, Write no longer throws. stream.Write(new byte[1], 0, 1); }
public void Write_TwoSegments_SetsLength() { var stream = new HttpResponseStream(); var buffer = new byte [10]; stream.Write(buffer, 0, 10); stream.Write(buffer, 0, 10); long len = stream.Length; Assert.AreEqual(20, len); }
public void Write_TwoSegments_SetsPosition() { var stream = new HttpResponseStream(); var buffer = new byte [10]; stream.Write(buffer, 0, 10); stream.Write(buffer, 0, 10); long pos = stream.Position; Assert.AreEqual(20, pos); }
public void SetLength_MultiBuffer_AddsFiller() { var stream = new HttpResponseStream(); var buffer = new byte [10]; stream.Write(buffer, 0, 10); stream.Write(buffer, 0, 10); stream.SetLength(25); long length = stream.Length; Assert.AreEqual(25, length); }
public void SetLength_EqualToCurrentLength_LengthStaysTheSame() { var stream = new HttpResponseStream(); var buffer = new byte [10]; stream.Write(buffer, 0, 10); stream.Write(buffer, 0, 10); stream.SetLength(20); long length = stream.Length; Assert.AreEqual(20, length); }
public void Write_ShorterThanBufferInSingleBuffer_SetsCorrectLength() { var stream = new HttpResponseStream(); var write_buffer = new byte [5]; stream.Write(write_buffer, 0, 5); stream.Position = 2; stream.Write(write_buffer, 0, 2); var length = stream.Length; Assert.AreEqual(5, length); }
public void Seek_FromCurrentBackwards_SetsPosition() { var stream = new HttpResponseStream(); var buffer = new byte [10]; stream.Write(buffer, 0, 10); stream.Write(buffer, 0, 10); stream.Seek(-5, SeekOrigin.Current); long pos = stream.Position; Assert.AreEqual(15, pos); }
public void Seek_FromEndLastIndexOfBuffer_SetsPosition() { var stream = new HttpResponseStream(); var buffer = new byte [10]; stream.Write(buffer, 0, 10); stream.Write(buffer, 0, 10); stream.Seek(-10, SeekOrigin.End); long pos = stream.Position; Assert.AreEqual(10, pos); }
public void Seek_FromEndMultipleBuffers_SetsPosition() { var stream = new HttpResponseStream(); var buffer = new byte [10]; stream.Write(buffer, 0, 10); stream.Write(buffer, 0, 10); stream.Write(buffer, 0, 10); stream.Seek(-5, SeekOrigin.End); long pos = stream.Position; Assert.AreEqual(25, pos); }
public void Seek_FromBeginningLastIndexOfSegment_SetsPosition() { var stream = new HttpResponseStream(); var buffer = new byte [10]; stream.Write(buffer, 0, 10); stream.Write(buffer, 0, 10); stream.Seek(10, SeekOrigin.Begin); long pos = stream.Position; Assert.AreEqual(10, pos); }
public void Write_SeekedBackInLastSegment_SetsPosition() { var stream = new HttpResponseStream(); var buffer = new byte [10]; stream.Write(buffer, 0, 10); stream.Write(buffer, 0, 10); stream.Seek(-5, SeekOrigin.Current); stream.Write(buffer, 0, 10); long pos = stream.Position; Assert.AreEqual(25, pos); }
public void Write_InFirstBufferOfTwoBufferStream_SetsCorrectLength() { var stream = new HttpResponseStream(); var write_buffer = new byte [5]; stream.Write(write_buffer, 0, 5); stream.Write(write_buffer, 0, 5); stream.Seek(-6, SeekOrigin.End); stream.Write(write_buffer, 0, 5); var length = stream.Length; Assert.AreEqual(10, length); }
public void Read_MultipleBuffers_UpdatesPosition() { var stream = new HttpResponseStream (); var buffer = new byte [10]; stream.Write (buffer, 0, 10); stream.Write (buffer, 0, 10); stream.Write (buffer, 0, 10); stream.Seek (15, SeekOrigin.Begin); stream.Read (buffer, 0, 5); long position = stream.Position; Assert.AreEqual (20, position); }
public void SetLength_LessThanMultiBuffer_Truncates() { var stream = new HttpResponseStream(); var buffer = new byte [10]; stream.Write(buffer, 0, 10); stream.Write(buffer, 0, 10); stream.Write(buffer, 0, 10); stream.SetLength(5); long length = stream.Length; Assert.AreEqual(5, length); }
public void Read_MultipleBuffers_UpdatesPosition() { var stream = new HttpResponseStream(); var buffer = new byte [10]; stream.Write(buffer, 0, 10); stream.Write(buffer, 0, 10); stream.Write(buffer, 0, 10); stream.Seek(15, SeekOrigin.Begin); stream.Read(buffer, 0, 5); long position = stream.Position; Assert.AreEqual(20, position); }
public void Write_AcrossEntireMiddleBufferOfThreeBufferStream_SetsCorrectLength() { var stream = new HttpResponseStream(); var write_buffer = new byte [5]; var write_buffer2 = new byte [6]; stream.Write(write_buffer, 0, 5); stream.Write(write_buffer, 0, 5); stream.Write(write_buffer, 0, 5); stream.Seek(2, SeekOrigin.Begin); stream.Write(write_buffer2, 0, 6); var length = stream.Length; Assert.AreEqual(15, length); }
public void Write_SeekedBackPastLastSegmentWriteOverAll_SetsPosition() { var stream = new HttpResponseStream(); var buffer = new byte [10]; var buffer_big = new byte [25]; stream.Write(buffer, 0, 10); stream.Write(buffer, 0, 10); stream.Seek(-15, SeekOrigin.Current); Assert.AreEqual(5, stream.Position); stream.Write(buffer_big, 0, 25); long pos = stream.Position; Assert.AreEqual(30, pos); }
public void SeekOrigin_PositivePastEnd_Throws() { var stream = new HttpResponseStream(); var buffer = new byte [10]; stream.Write(buffer, 0, 10); Should.Throw <ArgumentException> (() => stream.Seek(11, SeekOrigin.Begin)); }
public void Read_MultipleBuffers_CorrectData() { var stream = new HttpResponseStream (); var write_buffer1 = new byte [3]; var write_buffer2 = new byte [3]; var read_buffer = new byte [6]; stream.Write (write_buffer1, 0, 3); write_buffer2 [0] = 0xFA; stream.Write (write_buffer2, 0, 3); stream.Seek (0, SeekOrigin.Begin); stream.Read (read_buffer, 0, 6); byte read_byte = read_buffer [3]; Assert.AreEqual (0xFA, read_byte); }
public void Read_MultipleBuffers_CorrectData() { var stream = new HttpResponseStream(); var write_buffer1 = new byte [3]; var write_buffer2 = new byte [3]; var read_buffer = new byte [6]; stream.Write(write_buffer1, 0, 3); write_buffer2 [0] = 0xFA; stream.Write(write_buffer2, 0, 3); stream.Seek(0, SeekOrigin.Begin); stream.Read(read_buffer, 0, 6); byte read_byte = read_buffer [3]; Assert.AreEqual(0xFA, read_byte); }
public void Write_TruncatedSegment_SetsLength() { var stream = new HttpResponseStream(); var buffer = new byte [10]; stream.Write(buffer, 0, 5); long len = stream.Length; Assert.AreEqual(5, len); }
public void Read_PastEndOfStream_ReturnsAmountRead() { var stream = new HttpResponseStream (); var buffer = new byte [10]; stream.Write (buffer, 0, 10); stream.Seek (-1, SeekOrigin.End); int amount_read = stream.Read (buffer, 0, 2); Assert.AreEqual (1, amount_read); }
public void Read_PastEndOfStream_ReturnsAmountRead() { var stream = new HttpResponseStream(); var buffer = new byte [10]; stream.Write(buffer, 0, 10); stream.Seek(-1, SeekOrigin.End); int amount_read = stream.Read(buffer, 0, 2); Assert.AreEqual(1, amount_read); }
public void Read_ReadLastItem_UpdatesPosition() { var stream = new HttpResponseStream (); var buffer = new byte [10]; stream.Write (buffer, 0, 10); stream.Seek (-1, SeekOrigin.End); stream.Read (buffer, 0, 1); long position = stream.Position; Assert.AreEqual (10, position); }
public void Insert_BeginningOfStream_SetsCorrectPosition() { var stream = new HttpResponseStream (); var write_buffer = new byte [10]; stream.Write (write_buffer, 0, 10); stream.Position = 0; stream.Insert (write_buffer, 0, 5); var position = stream.Position; Assert.AreEqual (5, position); }
public void Insert_BeginningOfStream_SetsCorrectLength() { var stream = new HttpResponseStream (); var write_buffer = new byte [10]; stream.Write (write_buffer, 0, 10); stream.Position = 0; stream.Insert (write_buffer, 0, 10); var length = stream.Length; Assert.AreEqual (20, length); }
public void Read_ReadLastItem_UpdatesPosition() { var stream = new HttpResponseStream(); var buffer = new byte [10]; stream.Write(buffer, 0, 10); stream.Seek(-1, SeekOrigin.End); stream.Read(buffer, 0, 1); long position = stream.Position; Assert.AreEqual(10, position); }
public void Insert_BeginningOfStream_SetsCorrectLength() { var stream = new HttpResponseStream(); var write_buffer = new byte [10]; stream.Write(write_buffer, 0, 10); stream.Position = 0; stream.Insert(write_buffer, 0, 10); var length = stream.Length; Assert.AreEqual(20, length); }
public void Insert_BeginningOfStream_SetsCorrectPosition() { var stream = new HttpResponseStream(); var write_buffer = new byte [10]; stream.Write(write_buffer, 0, 10); stream.Position = 0; stream.Insert(write_buffer, 0, 5); var position = stream.Position; Assert.AreEqual(5, position); }
public void Insert_BeginningOfStream_SetsCorrectData() { var stream = new HttpResponseStream (); var write_buffer = new byte [10]; var write_buffer2 = new byte [10]; stream.Write (write_buffer, 0, 10); stream.Position = 0; write_buffer2 [2] = 0xFA; stream.Insert (write_buffer2, 0, 10); stream.Position = 2; var data = stream.ReadByte (); Assert.AreEqual (0xFA, data); }
public void Read_SingleBuffer_CorrectData() { var stream = new HttpResponseStream(); var write_buffer = new byte [3]; var read_buffer = new byte [1]; write_buffer [2] = 0xFA; stream.Write(write_buffer, 0, 3); stream.Seek(-1, SeekOrigin.End); stream.Read(read_buffer, 0, 1); byte read_byte = read_buffer [0]; Assert.AreEqual(0xFA, read_byte); }
public void Insert_BeginningOfStream_SetsCorrectData() { var stream = new HttpResponseStream(); var write_buffer = new byte [10]; var write_buffer2 = new byte [10]; stream.Write(write_buffer, 0, 10); stream.Position = 0; write_buffer2 [2] = 0xFA; stream.Insert(write_buffer2, 0, 10); stream.Position = 2; var data = stream.ReadByte(); Assert.AreEqual(0xFA, data); }
public void Write_TwoSegments_SetsLength() { var stream = new HttpResponseStream (); var buffer = new byte [10]; stream.Write (buffer, 0, 10); stream.Write (buffer, 0, 10); long len = stream.Length; Assert.AreEqual (20, len); }
public void Write_TwoSegments_SetsPosition() { var stream = new HttpResponseStream (); var buffer = new byte [10]; stream.Write (buffer, 0, 10); stream.Write (buffer, 0, 10); long pos = stream.Position; Assert.AreEqual (20, pos); }
public void Write_ShorterThanBufferInSingleBuffer_SetsCorrectLength() { var stream = new HttpResponseStream (); var write_buffer = new byte [5]; stream.Write (write_buffer, 0, 5); stream.Position = 2; stream.Write (write_buffer, 0, 2); var length = stream.Length; Assert.AreEqual (5, length); }
public void Write_TruncatedSegment_SetsLength() { var stream = new HttpResponseStream (); var buffer = new byte [10]; stream.Write (buffer, 0, 5); long len = stream.Length; Assert.AreEqual (5, len); }
public void Write_SeekedBackInLastSegment_SetsPosition() { var stream = new HttpResponseStream (); var buffer = new byte [10]; stream.Write (buffer, 0, 10); stream.Write (buffer, 0, 10); stream.Seek (-5, SeekOrigin.Current); stream.Write (buffer, 0, 10); long pos = stream.Position; Assert.AreEqual (25, pos); }
public void Write_SeekedBackPastLastSegmentWriteOverAll_SetsPosition() { var stream = new HttpResponseStream (); var buffer = new byte [10]; var buffer_big = new byte [25]; stream.Write (buffer, 0, 10); stream.Write (buffer, 0, 10); stream.Seek (-15, SeekOrigin.Current); Assert.AreEqual (5, stream.Position); stream.Write (buffer_big, 0, 25); long pos = stream.Position; Assert.AreEqual (30, pos); }
public void SeekOrigin_PositivePastEnd_Throws() { var stream = new HttpResponseStream (); var buffer = new byte [10]; stream.Write (buffer, 0, 10); Should.Throw<ArgumentException> (() => stream.Seek (11, SeekOrigin.Begin)); }
public void Seek_FromEndMultipleBuffersAcrossBoundries_SetsPosition() { var stream = new HttpResponseStream (); var buffer = new byte [10]; stream.Write (buffer, 0, 10); stream.Write (buffer, 0, 10); stream.Write (buffer, 0, 10); stream.Seek (-25, SeekOrigin.End); long pos = stream.Position; Assert.AreEqual (5, pos); }
public void Seek_FromBeginningMultipleSegments_SetsPosition() { var stream = new HttpResponseStream (); var buffer = new byte [10]; stream.Write (buffer, 0, 10); stream.Write (buffer, 0, 10); stream.Write (buffer, 0, 10); stream.Seek (25, SeekOrigin.Begin); long pos = stream.Position; Assert.AreEqual (25, pos); }
public void Write_AcrossEntireMiddleBufferOfThreeBufferStream_SetsCorrectLength() { var stream = new HttpResponseStream (); var write_buffer = new byte [5]; var write_buffer2 = new byte [6]; stream.Write (write_buffer, 0, 5); stream.Write (write_buffer, 0, 5); stream.Write (write_buffer, 0, 5); stream.Seek (2, SeekOrigin.Begin); stream.Write (write_buffer2, 0, 6); var length = stream.Length; Assert.AreEqual (15, length); }
public void SetLength_LessThanSingleBuffer_Truncates() { var stream = new HttpResponseStream (); var buffer = new byte [10]; stream.Write (buffer, 0, 10); stream.SetLength (5); long length = stream.Length; Assert.AreEqual (5, length); }
public void SetLength_EqualToCurrentLength_LengthStaysTheSame() { var stream = new HttpResponseStream (); var buffer = new byte [10]; stream.Write (buffer, 0, 10); stream.Write (buffer, 0, 10); stream.SetLength (20); long length = stream.Length; Assert.AreEqual (20, length); }
public void Seek_FromEnd_SetsPosition() { var stream = new HttpResponseStream (); var buffer = new byte [10]; stream.Write (buffer, 0, 10); stream.Seek (-3, SeekOrigin.End); long pos = stream.Position; Assert.AreEqual (7, pos); }
public void Read_SingleBuffer_CorrectData() { var stream = new HttpResponseStream (); var write_buffer = new byte [3]; var read_buffer = new byte [1]; write_buffer [2] = 0xFA; stream.Write (write_buffer, 0, 3); stream.Seek (-1, SeekOrigin.End); stream.Read (read_buffer, 0, 1); byte read_byte = read_buffer [0]; Assert.AreEqual (0xFA, read_byte); }
public void Write_InFirstBufferOfTwoBufferStream_SetsCorrectLength() { var stream = new HttpResponseStream (); var write_buffer = new byte [5]; stream.Write (write_buffer, 0, 5); stream.Write (write_buffer, 0, 5); stream.Seek (-6, SeekOrigin.End); stream.Write (write_buffer, 0, 5); var length = stream.Length; Assert.AreEqual (10, length); }
public void SetLength_MultiBuffer_AddsFiller() { var stream = new HttpResponseStream (); var buffer = new byte [10]; stream.Write (buffer, 0, 10); stream.Write (buffer, 0, 10); stream.SetLength (25); long length = stream.Length; Assert.AreEqual (25, length); }
public void Seek_FromCurrentBackwards_SetsPosition() { var stream = new HttpResponseStream (); var buffer = new byte [10]; stream.Write (buffer, 0, 10); stream.Write (buffer, 0, 10); stream.Seek (-5, SeekOrigin.Current); long pos = stream.Position; Assert.AreEqual (15, pos); }