示例#1
0
        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();
            }
        }
示例#2
0
        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));
            }
        }
示例#3
0
        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();
        }
示例#4
0
        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();
        }