Esempio n. 1
0
        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]);
        }
Esempio n. 2
0
        public static void Insertion()
        {
            Span <byte> block = stackalloc byte[] { 10, 20, 30 };

            using var writer = new PooledArrayBufferWriter <byte>();

            writer.Insert(0, block);
            Equal(3, writer.WrittenCount);
            Equal(10, writer[0]);
            Equal(20, writer[1]);
            Equal(30, writer[2]);

            block[0] = 40;
            block[1] = 50;
            block[2] = 60;
            writer.Insert(3, block);
            Equal(6, writer.WrittenCount);
            Equal(10, writer[0]);
            Equal(20, writer[1]);
            Equal(30, writer[2]);
            Equal(40, writer[3]);
            Equal(50, writer[4]);
            Equal(60, writer[5]);

            writer.Clear(true);
            var random = RandomBytes(writer.FreeCapacity);

            writer.Write(random);
            Equal(0, writer.FreeCapacity);

            block[0] = 100;
            block[1] = 110;
            block[2] = 120;

            writer.Insert(writer.WrittenCount - 1, block);
            Equal(random[0..(random.Length - 1)], writer.WrittenMemory.Span.Slice(0, random.Length - 1).ToArray());