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); }
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); }