public static void ReadWriteUsingArray() { using var writer = new PooledArrayBufferWriter <byte>(ArrayPool <byte> .Shared, 25); True(writer.Capacity >= 25); True(writer.WrittenArray.Count == 0); Equal(0, writer.WrittenCount); var memory = writer.GetArray(100); new ArraySegment <byte>(new byte[] { 10, 20, 30 }).CopyTo(memory); writer.Advance(3); var result = writer.WrittenArray; Equal(3, result.Count); Equal(3, writer.WrittenCount); Equal(10, result[0]); Equal(20, result[1]); Equal(30, result[2]); memory = writer.GetArray(3); new ArraySegment <byte>(new byte[] { 40, 50, 60 }).CopyTo(memory); writer.Advance(3); result = writer.WrittenArray; Equal(6, writer.WrittenCount); Equal(6, result.Count); Equal(10, result[0]); Equal(20, result[1]); Equal(30, result[2]); Equal(40, result[3]); Equal(50, result[4]); Equal(60, result[5]); }
public static void ReuseArrayWriter() { using var writer = new PooledArrayBufferWriter <byte>(); var span = writer.GetSpan(10); span[0] = 20; span[9] = 30; writer.Advance(10); writer.Clear(); span = writer.GetSpan(10); span[0] = 40; span[9] = 50; writer.Advance(10); Equal(40, writer.WrittenMemory.Span[0]); Equal(50, writer.WrittenMemory.Span[9]); }
public static void StreamInterop() { using var writer = new PooledArrayBufferWriter <byte>(); var span = writer.GetSpan(10); new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }.AsSpan().CopyTo(span); writer.Advance(10); using var stream = StreamSource.GetWrittenBytesAsStream(writer); True(stream.CanRead); False(stream.CanWrite); Equal(0, stream.Position); Equal(10, stream.Length); var buffer = new byte[10]; Equal(10, stream.Read(buffer, 0, 10)); for (var i = 0; i < buffer.Length; i++) { Equal(i, buffer[i]); } }