public void u8WriteOutOfRange() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); Assert.Throws <ArgumentOutOfRangeException>(() => writer.u8(125, 0, 123)); Assert.Throws <ArgumentOutOfRangeException>(() => writer.u8(1, 2, 123)); Assert.Throws <ArgumentException>(() => writer.u8(123, 2)); Assert.Throws <ArgumentException>(() => writer.u8(44, 55, 33)); }
public void ByteMin3() { var buffer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); buffer.u8(byte.MinValue); buffer.u8(byte.MinValue); buffer.u8(byte.MinValue); Assert.AreEqual(3, buffer.LengthWritten); }
public void BitsRead() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); Assert.AreEqual(0, writer.BitsWritten); writer.b(true); Assert.AreEqual(1, writer.BitsWritten); writer.u8(123); Assert.AreEqual(9, writer.BitsWritten); writer.i16(12345); Assert.AreEqual(33, writer.BitsWritten); writer.i32(1234567890); Assert.AreEqual(73, writer.BitsWritten); var data = writer.ToArray(); var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(); reader.CopyFrom(data); Assert.AreEqual(0, reader.BitsRead); reader.b(); Assert.AreEqual(1, reader.BitsRead); reader.u8(); Assert.AreEqual(9, reader.BitsRead); reader.i16(); Assert.AreEqual(33, reader.BitsRead); reader.i32(); Assert.AreEqual(73, reader.BitsRead); }
public void u8MaxValueWritePeek() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); writer.u8(u8.MaxValue); var data = writer.ToArray(); var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(); reader.CopyFrom(data); Assert.AreEqual(u8.MaxValue, reader.u8Peek()); Assert.AreEqual(reader.u8Peek(), reader.u8()); }
public void ByteHalf() { var buffer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); buffer.u8(byte.MaxValue / 2); buffer.u8(byte.MaxValue / 2); buffer.u8(byte.MaxValue / 2); buffer.u8(byte.MaxValue / 2); buffer.u8(byte.MaxValue / 2); buffer.u8(byte.MaxValue / 2); buffer.u8(byte.MaxValue / 2); buffer.u8(byte.MaxValue / 2); Assert.AreEqual(8, buffer.LengthWritten); }
public void u8WriteRead() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); writer.u8(u8.MaxValue); writer.Align(); var allocated = new u8[ushort.MaxValue]; writer.ToSpan(allocated); var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(allocated.Length); reader.CopyFrom(allocated); Assert.AreEqual(u8.MaxValue, reader.u8()); }
public void ToFromArrayPosition() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); writer.u8(13); writer.i64(i64.MaxValue); writer.Align(); var allocated = new byte[ushort.MaxValue]; writer.ToSpan(new Span <u8>(allocated, 10, 100)); var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(allocated.Length); reader.CopyFrom(new ReadOnlySpan <u8>(allocated, 10, 100)); Assert.AreEqual(13, reader.u8()); Assert.AreEqual(long.MaxValue, reader.i64()); }
public void u8WritePeekRead256() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(1000); for (int i = 0; i < 513; i++) { var val = (u8)(u8.MaxValue / (i % 2 + 1)); writer.u8(val); } var data = writer.ToArray(); var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(); reader.CopyFrom(data); for (int i = 0; i < 513; i++) { var val = (u8)(u8.MaxValue / (i % 2 + 1)); Assert.AreEqual(val, reader.u8Peek()); Assert.AreEqual(val, reader.u8()); } }
public void u8MinMaxRequired() { var buffer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); buffer.u8(123, 0, 201); buffer.u8(1); buffer.u8(42, 1, 43); buffer.u8(1, 0, 10); buffer.u8(2, 3); buffer.u8(0); var bitsWritten = buffer.BitsWritten; var data = buffer.ToArray(); var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(); reader.CopyFrom(data); Assert.AreEqual(123, reader.u8(0, 201)); Assert.AreEqual(1, reader.u8()); Assert.AreEqual(42, reader.u8(1, 43)); Assert.AreEqual(1, reader.u8(0, 10)); Assert.AreEqual(2, reader.u8(3)); Assert.AreEqual(0, reader.u8()); Assert.AreEqual(bitsWritten, reader.BitsRead); }