static void test_bitpacker() { Log("test_bitpacker"); const int BufferSize = 256; var buffer = new uint[BufferSize]; var writer = new Network.BitWriter(); writer.Start(buffer); IsTrue(writer.GetTotalBytes() == BufferSize); IsTrue(writer.GetBitsWritten() == 0); IsTrue(writer.GetBytesWritten() == 0); IsTrue(writer.GetBitsAvailable() == BufferSize * 8); writer.Bits(0, 1); writer.Bits(1, 1); writer.Bits(10, 8); writer.Bits(255, 8); writer.Bits(1000, 10); writer.Bits(50000, 16); writer.Bits(9999999, 32); writer.Finish(); const int bitsWritten = 1 + 1 + 8 + 8 + 10 + 16 + 32; IsTrue(writer.GetBytesWritten() == 10); IsTrue(writer.GetTotalBytes() == BufferSize); IsTrue(writer.GetBitsWritten() == bitsWritten); IsTrue(writer.GetBitsAvailable() == BufferSize * 8 - bitsWritten); int bytesWritten = writer.GetBytesWritten(); const int ExpectedBytesWritten = 10; IsTrue(bytesWritten == ExpectedBytesWritten); var readBuffer = writer.GetData(); IsTrue(readBuffer.Length == ExpectedBytesWritten); var reader = new BitReader(); reader.Start(readBuffer); IsTrue(reader.GetBitsRead() == 0); IsTrue(reader.GetBitsRemaining() == bytesWritten * 8); var a = reader.Bits(1); var b = reader.Bits(1); var c = reader.Bits(8); var d = reader.Bits(8); var e = reader.Bits(10); var f = reader.Bits(16); var g = reader.Bits(32); reader.Finish(); IsTrue(a == 0); IsTrue(b == 1); IsTrue(c == 10); IsTrue(d == 255); IsTrue(e == 1000); IsTrue(f == 50000); IsTrue(g == 9999999); IsTrue(reader.GetBitsRead() == bitsWritten); IsTrue(reader.GetBitsRemaining() == bytesWritten * 8 - bitsWritten); }