public void HttpResponseStreamWriter_UsingPooledBuffers() { // Arrange var encoding = Encoding.UTF8; var stream = new MemoryStream(); var expectedBytes = encoding.GetBytes("Hello, World!"); using (var bytePool = new DefaultArraySegmentPool <byte>()) { using (var charPool = new DefaultArraySegmentPool <char>()) { LeasedArraySegment <byte> bytes = null; LeasedArraySegment <char> chars = null; HttpResponseStreamWriter writer; try { bytes = bytePool.Lease(4096); chars = charPool.Lease(1024); writer = new HttpResponseStreamWriter(stream, encoding, 1024, bytes, chars); } catch { if (bytes != null) { bytes.Owner.Return(bytes); } if (chars != null) { chars.Owner.Return(chars); } throw; } // Act using (writer) { writer.Write("Hello, World!"); } } } // Assert Assert.Equal(expectedBytes, stream.ToArray()); }
public void WriteCharArray_WritesToStream(int byteLength) { // Arrange var stream = new TestMemoryStream(); var writer = new HttpResponseStreamWriter(stream, Encoding.UTF8); // Act using (writer) { writer.Write((new string('a', byteLength)).ToCharArray()); } // Assert Assert.Equal(byteLength, stream.Length); }
public void FlushesBuffer_OnFlush(int byteLength) { // Arrange var stream = new TestMemoryStream(); var writer = new HttpResponseStreamWriter(stream, Encoding.UTF8); writer.Write(new string('a', byteLength)); // Act writer.Flush(); // Assert Assert.Equal(1, stream.FlushCallCount); Assert.Equal(byteLength, stream.Length); }
public void WriteChar_WritesToStream(int byteLength) { // Arrange var stream = new TestMemoryStream(); var writer = new HttpResponseStreamWriter(stream, Encoding.UTF8); // Act using (writer) { for (var i = 0; i < byteLength; i++) { writer.Write('a'); } } // Assert Assert.Equal(byteLength, stream.Length); }
public void FlushesBuffer_ButNotStream_OnFlush(int byteLength) { // Arrange var stream = new TestMemoryStream(); var writer = new HttpResponseStreamWriter(stream, Encoding.UTF8); writer.Write(new string('a', byteLength)); var expectedWriteCount = Math.Ceiling((double)byteLength / HttpResponseStreamWriter.DefaultBufferSize); // Act writer.Flush(); // Assert Assert.Equal(0, stream.FlushCallCount); Assert.Equal(expectedWriteCount, stream.WriteCallCount); Assert.Equal(byteLength, stream.Length); }
public void HttpResponseStreamWriter_UsingPooledBuffers() { // Arrange var encoding = Encoding.UTF8; var stream = new MemoryStream(); var expectedBytes = encoding.GetBytes("Hello, World!"); using (var writer = new HttpResponseStreamWriter( stream, encoding, 1024, ArrayPool <byte> .Shared, ArrayPool <char> .Shared)) { // Act writer.Write("Hello, World!"); } // Assert Assert.Equal(expectedBytes, stream.ToArray()); }
public void HttpResponseStreamWriter_UsingPooledBuffers() { // Arrange var encoding = Encoding.UTF8; var stream = new MemoryStream(); var expectedBytes = encoding.GetBytes("Hello, World!"); using (var writer = new HttpResponseStreamWriter( stream, encoding, 1024, ArrayPool<byte>.Shared, ArrayPool<char>.Shared)) { // Act writer.Write("Hello, World!"); } // Assert Assert.Equal(expectedBytes, stream.ToArray()); }
public void HttpResponseStreamWriter_UsingPooledBuffers() { // Arrange var encoding = Encoding.UTF8; var stream = new MemoryStream(); var expectedBytes = encoding.GetBytes("Hello, World!"); using (var bytePool = new DefaultArraySegmentPool<byte>()) { using (var charPool = new DefaultArraySegmentPool<char>()) { LeasedArraySegment<byte> bytes = null; LeasedArraySegment<char> chars = null; HttpResponseStreamWriter writer; try { bytes = bytePool.Lease(4096); chars = charPool.Lease(1024); writer = new HttpResponseStreamWriter(stream, encoding, 1024, bytes, chars); } catch { if (bytes != null) { bytes.Owner.Return(bytes); } if (chars != null) { chars.Owner.Return(chars); } throw; } // Act using (writer) { writer.Write("Hello, World!"); } } } // Assert Assert.Equal(expectedBytes, stream.ToArray()); }