public void TestVLQUInt16() { var rnd = new Random(); for (var c = 0; c < count; c++) { var memSize = rnd.Next(1, 10_000); var mem = new byte[memSize * SpanUtils.MeasureVLQ(UInt16.MaxValue) + 1]; var span1 = new MemoryStreamer(mem); var span2 = new MemoryStreamer(mem); var data = new UInt16[memSize]; for (var i = 0; i < memSize; i++) { data[i] = rnd.NextUInt16(); } for (var i = 0; i < memSize; i++) { span1.WriteVLQ(data[i]); } for (var i = 0; i < memSize; i++) { Assert.Equal(data[i], span2.ReadVLQUInt16(out var len)); Assert.Equal(SpanUtils.MeasureVLQ(data[i]), len); } // Check overflow new Span <byte>(mem).Fill(0xFF); Assert.Throws <OverflowException>(() => { var span3 = new MemoryStreamer(mem); span3.ReadVLQUInt16(out _); }); } }