public void RandomManyTimes() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(); var random = new Random(42); for (var i = 0; i < i16.MaxValue; i++) { for (var j = 0; j < BitBufferLimits.MtuIeee802; j++) { if (random.Next() % 11 == 0) { writer.i64(long.MaxValue); } if (random.Next() % 7 == 0) { writer.i32(int.MaxValue); } if (random.Next() % 5 == 0) { writer.i16(i16.MaxValue); } if (random.Next() % 3 == 0) { writer.b(true); } } var result = writer.ToArray(); reader.CopyFrom(result); writer.Reset(); } }
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 ResetSet() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(8); writer.i32(666); var bitsWritten = writer.BitsWritten; var bitsAvailable = writer.BitsAvailable; writer.Reset(); Assert.AreEqual(0, writer.BitsWritten); writer.i32(666); Assert.AreEqual(bitsWritten, writer.BitsWritten); Assert.AreEqual(bitsAvailable, writer.BitsAvailable); writer.i32(-273); writer.b(true); writer.i64(1234567890); var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(); reader.CopyFrom(writer.ToArray()); Assert.AreEqual(666, reader.i32()); var bitsRead = reader.BitsRead; reader.i32(); reader.SetPosition(bitsRead); Assert.AreEqual(-273, reader.i32()); var bitPosition = reader.BitsRead; reader.b(); reader.SetPosition(bitPosition); Assert.True(reader.b()); }
public void TrueFalseTrueReadWrite() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); writer.b(true); writer.b(false); writer.b(true); writer.Align(); var allocated = new byte[ushort.MaxValue]; writer.ToSpan(allocated); var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(allocated.Length); reader.CopyFrom(allocated); Assert.True(reader.b()); Assert.False(reader.b()); Assert.True(reader.b()); }
public void BoolIsBit9() { var buffer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); buffer.b(true); buffer.b(true); buffer.b(true); buffer.b(true); buffer.b(true); buffer.b(true); buffer.b(true); buffer.b(true); buffer.b(true); Assert.AreEqual(2, buffer.LengthWritten); }
public void PeekBool() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); writer.b(true); var data = writer.ToArray(); var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(); reader.CopyFrom(data); Assert.True(reader.bPeek()); Assert.True(reader.b()); }
public void BoolWritePeek128() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); writer.b(true); var data = writer.ToArray(); var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(); reader.CopyFrom(data); for (int i = 0; i < 128; i++) { Assert.True(reader.bPeek()); } }