public void TestMeasureOverflow() { var mem = new byte[1]; Assert.Throws <ArgumentException>(() => { var span1 = new Span <byte>(mem); _ = SpanUtils.MeasureWriteSize(UInt32.MaxValue); }); }
public void TestSize() { var rnd = new System.Random(); for (var c = 0; c < count; c++) { var mem = new byte[sizeof(UInt32) * writeRepeatCount]; var span1 = new Span <byte>(mem); var span2 = new ReadOnlySpan <byte>(mem); var a = new UInt32[writeRepeatCount]; for (var i = 0; i < writeRepeatCount; i++) { var sr = rnd.Next(0, 4); uint n; switch (sr) { case 0: n = (UInt32)rnd.Next(0, 0b00111111); break; case 1: n = (UInt32)rnd.Next(0b01000000, 0b00111111_11111111); break; case 2: n = (UInt32)rnd.Next(0b01000000_00000000, 0b00111111_11111111_11111111); break; //case 3: default: n = (UInt32)rnd.Next(0b01000000_00000000_00000000, 0b00111111_11111111_11111111_11111111); break; } a[i] = n; span1.MoveWriteSize(n); } // Ensure span is not zero Assert.NotEqual(0, span2.ToArray().Select(b => (int)b).Sum()); for (var i = 0; i < writeRepeatCount; i++) { var r = span2.MoveReadSize(out var len); Assert.Equal(SpanUtils.MeasureWriteSize(a[i]), len); Assert.Equal(a[i], r); } } }