public void TestCopyingToOutputStream() { IByteBuffer buf1 = Unpooled.DirectBuffer(10); IByteBuffer buf2 = Unpooled.Buffer(10); IByteBuffer buf3 = Unpooled.DirectBuffer(10); buf1.WriteBytes(Encoding.ASCII.GetBytes("a")); buf2.WriteBytes(Encoding.ASCII.GetBytes("b")); buf3.WriteBytes(Encoding.ASCII.GetBytes("c")); IByteBuffer composite = Unpooled.WrappedUnmodifiableBuffer(buf1, buf2, buf3); IByteBuffer copy = Unpooled.DirectBuffer(3); IByteBuffer copy2 = Unpooled.Buffer(3); var copyStream = new ByteBufferStream(copy); var copy2Stream = new ByteBufferStream(copy2); try { composite.GetBytes(0, copyStream, 3); composite.GetBytes(0, copy2Stream, 3); Assert.Equal(0, ByteBufferUtil.Compare(copy, composite)); Assert.Equal(0, ByteBufferUtil.Compare(copy2, composite)); Assert.Equal(0, ByteBufferUtil.Compare(copy, copy2)); } finally { copy.Release(); copy2.Release(); copyStream.Close(); copy2Stream.Close(); composite.Release(); } }
public void SetContentFromStream() { // definedSize=0 TestHttpData test = new TestHttpData("test", Encoding.UTF8, 0); string contentStr = "foo_test"; var buf = Unpooled.WrappedBuffer(Encoding.UTF8.GetBytes(contentStr)); buf.MarkReaderIndex(); var bs = new ByteBufferStream(buf); try { test.SetContent(bs); Assert.False(buf.IsReadable()); Assert.Equal(test.GetString(Encoding.UTF8), contentStr); buf.ResetReaderIndex(); Assert.True(ByteBufferUtil.Equals(buf, test.GetByteBuffer())); } finally { bs.Close(); } var random = new Random(); for (int i = 0; i < 20; i++) { // Generate input data bytes. int size = random.Next(short.MaxValue); var bytes = new byte[size]; random.NextBytes(bytes); // Generate parsed HTTP data block. var httpData = new TestHttpData("name", Encoding.UTF8, 0); httpData.SetContent(new MemoryStream(bytes)); // Validate stored data. IByteBuffer buffer = httpData.GetByteBuffer(); Assert.Equal(0, buffer.ReaderIndex); Assert.Equal(bytes.Length, buffer.WriterIndex); var data = new byte[bytes.Length]; buffer.GetBytes(buffer.ReaderIndex, data); Assert.True(data.AsSpan().SequenceEqual(bytes)); } }
public async Task CopyToAsync() { var byteBuffer = Unpooled.Buffer(4096); var bufferStream = new ByteBufferStream(byteBuffer, true); var text = "庄生晓梦迷蝴蝶,望帝春心托杜鹃。"; var bytes = Encoding.UTF8.GetBytes(text); await bufferStream.WriteAsync(bytes, 0, bytes.Length); Assert.Equal(bytes.Length, bufferStream.Length); var ms = new MemoryStream(); await bufferStream.CopyToAsync(ms); ms.Position = 0; Assert.Equal(text, Encoding.UTF8.GetString(ms.ToArray())); bufferStream.Close(); }
public void CopyTo() { var byteBuffer = Unpooled.Buffer(4096); var bufferStream = new ByteBufferStream(byteBuffer, true); var text = "Hello World"; var bytes = Encoding.UTF8.GetBytes(text); bufferStream.Write(bytes, 0, bytes.Length); Assert.Equal(bytes.Length, bufferStream.Length); var ms = new MemoryStream(); bufferStream.CopyTo(ms); ms.Position = 0; Assert.Equal(text, Encoding.UTF8.GetString(ms.ToArray())); bufferStream.Close(); }