public void i16ReadWrite() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); writer.i16(i16.MinValue); writer.i16(i16.MinValue / 2); writer.i16(0); i16 half = i16.MaxValue / 2; writer.i16(half); writer.i16(i16.MaxValue); writer.Align(); var allocated = new byte[i16.MaxValue]; writer.ToSpan(allocated); var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(allocated.Length); reader.CopyFrom(allocated); Assert.AreEqual(i16.MinValue, reader.i16()); Assert.AreEqual(i16.MinValue / 2, reader.i16()); Assert.AreEqual(0, reader.i16()); Assert.AreEqual(half, reader.i16Peek()); Assert.AreEqual(half, reader.i16()); Assert.AreEqual(i16.MaxValue, reader.i16()); }
public void ShortZeroMax4() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); writer.i16(short.MaxValue, 0, short.MaxValue); writer.i16(short.MaxValue, 0, short.MaxValue); writer.i16(short.MaxValue, 0, short.MaxValue); writer.i16(short.MaxValue, 0, short.MaxValue); Assert.AreEqual(8, writer.LengthWritten); }
public void ShortMinMax4() { var buffer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); buffer.i16(short.MaxValue, short.MinValue, short.MaxValue); buffer.i16(short.MaxValue, short.MinValue, short.MaxValue); buffer.i16(short.MaxValue, short.MinValue, short.MaxValue); buffer.i16(short.MaxValue, short.MinValue, short.MaxValue); Assert.AreEqual(8, buffer.LengthWritten); }
public void ByteShort0() { var buffer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); buffer.i16(0); buffer.i16(0); buffer.i16(0); buffer.i16(0); Assert.AreEqual(4, buffer.LengthWritten); }
public void i16ReadWriteLimits() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); writer.i16(-1, -2, 2); writer.i16(-1, 4); var allocated = new byte[i16.MaxValue]; writer.ToSpan(allocated); var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(allocated.Length); reader.CopyFrom(allocated); Assert.AreEqual(-1, reader.i16(-2, 2)); Assert.AreEqual(-1, reader.i16(4)); }
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 ShortMax4Divided() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); for (var i = 0; i < 8; i++) { writer.i16(short.MaxValue / 3); } Assert.AreEqual(24, writer.LengthWritten); }
public void ToArrayFromFrom() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(100); writer.i64(i64.MaxValue); writer.i32(i32.MaxValue); writer.i16(i16.MaxValue); var result = writer.ToArray(); var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(); reader.CopyFrom(result); Assert.AreEqual(i64.MaxValue, reader.i64()); Assert.AreEqual(i32.MaxValue, reader.i32()); Assert.AreEqual(i16.MaxValue, reader.i16()); reader.CopyFrom(result); Assert.AreEqual(i64.MaxValue, reader.i64()); Assert.AreEqual(i32.MaxValue, reader.i32()); Assert.AreEqual(i16.MaxValue, reader.i16()); }
public void ToSpanFromFrom() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(100); writer.i64(i64.MaxValue); writer.i32(i32.MaxValue); writer.i16(i16.MaxValue); Span <byte> span = new byte[writer.LengthWritten]; ReadOnlySpan <byte> read = span; writer.ToSpan(span); var reader = new BitBufferReader <SevenBitDecoding <u32ArrayMemory> >(); reader.CopyFrom(read); Assert.AreEqual(i64.MaxValue, reader.i64()); Assert.AreEqual(i32.MaxValue, reader.i32()); Assert.AreEqual(i16.MaxValue, reader.i16()); reader.CopyFrom(read); Assert.AreEqual(i64.MaxValue, reader.i64()); Assert.AreEqual(i32.MaxValue, reader.i32()); Assert.AreEqual(i16.MaxValue, reader.i16()); }
public void i8ReadWriteSmallLimits() { var writer = new BitBufferWriter <SevenBitEncoding <u32ArrayMemory> >(); writer.i32(500); writer.i16(1); writer.i32(0); writer.u8(0, 0, 4); writer.u8(1, 0, 4); writer.u8(2, 0, 4); writer.u8(3, 0, 4); writer.u8(4, 0, 4); writer.i32(0, 0, 4); writer.i32(1, 0, 4); writer.i32(2, 0, 4); writer.i32(3, 0, 4); writer.i32(4, 0, 4); #if !NO_EXCEPTIONS Assert.Throws <System.ArgumentOutOfRangeException>(() => writer.u8(5, 0, 4)); Assert.Throws <System.ArgumentOutOfRangeException>(() => writer.u8(255, 0, 4)); Assert.Throws <System.ArgumentOutOfRangeException>(() => writer.i32(5, 0, 4)); Assert.Throws <System.ArgumentOutOfRangeException>(() => writer.i32(255, 0, 4)); #endif }