Ejemplo n.º 1
0
        public void SimpleWriteAndRead()
        {
            var random = new Random(42);

            var manager = new NonePooledMemoryStreamManager(new PooledMemoryStreamOptions()
            {
                MinimumSegmentSize = 16
            });

            var ms          = new MemoryStream();
            var stream      = manager.GetStream();
            var writeStream = new BroadcastWriteStream(ms, stream);

            var buffer = new byte[32];

            random.NextBytes(buffer);

            writeStream.Write(buffer, 0, 4);
            writeStream.Write(buffer, 0, 8);
            writeStream.Write(buffer, 0, 12);
            writeStream.Write(buffer, 0, 16);
            writeStream.Write(buffer, 0, 32);

            writeStream.Write(buffer.AsSpan(0, 4));
            writeStream.Write(buffer.AsSpan(0, 8));
            writeStream.Write(buffer.AsSpan(0, 12));
            writeStream.Write(buffer.AsSpan(0, 16));
            writeStream.Write(buffer.AsSpan(0, 32));

            AssertHelper.StreamEqual(ms, stream);
        }
        public void ExpandUsingSmallSourceOnEmptyInstance()
        {
            var manager = new NonePooledMemoryStreamManager(new PooledMemoryStreamOptions()
            {
                MinimumSegmentSize = 16, MaximumSegmentSize = 16
            });

            PooledMemoryStream stream = manager.GetStream();

            stream.SetLength(32);

            Assert.Equal(32, stream.Length);
            Assert.Equal(0, stream.Position);
            Assert.Equal(32, stream.Capacity);
        }
        public void ExpandUsingSmallSource()
        {
            var manager = new NonePooledMemoryStreamManager(new PooledMemoryStreamOptions()
            {
                MinimumSegmentSize = 16, MaximumSegmentSize = 16
            });

            PooledMemoryStream stream = manager.GetStream();

            stream.Write(new byte[10]);
            stream.SetLength(48);

            Assert.Equal(48, stream.Length);
            Assert.Equal(10, stream.Position);
            Assert.Equal(48, stream.Capacity);
        }
        public void TestSimpleConvertToReadOnlySequence()
        {
            var manager = new NonePooledMemoryStreamManager(new PooledMemoryStreamOptions()
            {
                MinimumSegmentSize = 16
            });

            PooledMemoryStream stream = manager.GetStream();
            var writer = (IBufferWriter <byte>)stream;

            writer.GetSpan(15);
            writer.Advance(15);
            writer.GetSpan(15);
            writer.Advance(15);

            ReadOnlySequence <byte> sequence = stream.ToReadOnlySequence();

            Assert.Equal(30, sequence.Length);
            Assert.Equal(15, sequence.FirstSpan.Length);
        }
        public void TestCapacity()
        {
            var manager = new NonePooledMemoryStreamManager(new PooledMemoryStreamOptions()
            {
                MinimumSegmentSize = 16
            });

            PooledMemoryStream stream = manager.GetStream();
            var writer = (IBufferWriter <byte>)stream;

            writer.GetSpan(15);
            writer.Advance(15);
            Assert.Equal(16, stream.Capacity);

            writer.GetSpan(15);
            writer.Advance(15);
            Assert.Equal(31, stream.Capacity);

            writer.GetSpan(15);
            writer.Advance(15);
            Assert.Equal(46, stream.Capacity);
        }
Ejemplo n.º 6
0
        public void WriteWithSeek(bool useSpan)
        {
            var manager = new NonePooledMemoryStreamManager(new PooledMemoryStreamOptions()
            {
                MinimumSegmentSize = 16
            });

            var ms = new MemoryStream();
            PooledMemoryStream stream = manager.GetStream();

            var writeStream = new BroadcastWriteStream(ms, stream);

            byte[] buffer = new byte[8];
            buffer.AsSpan().Fill(1);
            if (useSpan)
            {
                writeStream.Write(buffer.AsSpan(0, 8));
            }
            else
            {
                writeStream.Write(buffer, 0, 8);
            }

            buffer.AsSpan().Fill(2);
            if (useSpan)
            {
                writeStream.Write(buffer.AsSpan(0, 8));
            }
            else
            {
                writeStream.Write(buffer, 0, 8);
            }

            buffer.AsSpan().Fill(3);
            if (useSpan)
            {
                writeStream.Write(buffer.AsSpan(0, 8));
            }
            else
            {
                writeStream.Write(buffer, 0, 8);
            }

            buffer.AsSpan().Fill(4);
            if (useSpan)
            {
                writeStream.Write(buffer.AsSpan(0, 8));
            }
            else
            {
                writeStream.Write(buffer, 0, 8);
            }

            ms.Seek(24, SeekOrigin.Begin);
            stream.Seek(24, SeekOrigin.Begin);

            buffer.AsSpan().Fill(5);
            if (useSpan)
            {
                writeStream.Write(buffer.AsSpan(0, 4));
            }
            else
            {
                writeStream.Write(buffer, 0, 4);
            }

            AssertHelper.StreamEqual(ms, stream);
        }