#include "gamemath/BitOperations.h" #include "unittest/TestSuite.h" static void testReadUInt32BitUnaligned(void) { uint8_t buffer[] = {0x07, 0xC3, 0xC7, 0x35}; // 0000 0111 1100 0011 1100 0111 0011 0101 size_t byteIndex = 0; unsigned int bitIndex = 0; uint32_t result = readUInt32BitUnaligned(buffer, &byteIndex, &bitIndex, 32); TestCase_assertUIntEqual(result, 0x07C3C735); TestCase_assertSizeEqual(byteIndex, 4); TestCase_assertUIntEqual(bitIndex, 0); byteIndex = 1; result = readUInt32BitUnaligned(buffer, &byteIndex, &bitIndex, 16); TestCase_assertUIntEqual(result, 0xC3C7); TestCase_assertSizeEqual(byteIndex, 3); TestCase_assertUIntEqual(bitIndex, 0); byteIndex = 1; bitIndex = 7; result = readUInt32BitUnaligned(buffer, &byteIndex, &bitIndex, 15); TestCase_assertUIntEqual(result, 0x71CD); // **** **** **** ***1 1100 0111 0011 01** TestCase_assertSizeEqual(byteIndex, 3); TestCase_assertUIntEqual(bitIndex, 6); byteIndex = 1; bitIndex = 1; result = readUInt32BitUnaligned(buffer, &byteIndex, &bitIndex, 15); TestCase_assertUIntEqual(result, 0x43C7); // **** **** *100 0011 1100 0111 **** **** TestCase_assertSizeEqual(byteIndex, 3); TestCase_assertUIntEqual(bitIndex, 0); byteIndex = 0; bitIndex = 3; result = readUInt32BitUnaligned(buffer, &byteIndex, &bitIndex, 14); TestCase_assertUIntEqual(result, 0x0F87); // ***0 0111 1100 0011 1*** **** **** **** TestCase_assertSizeEqual(byteIndex, 2); TestCase_assertUIntEqual(bitIndex, 1); byteIndex = 2; bitIndex = 1; result = readUInt32BitUnaligned(buffer, &byteIndex, &bitIndex, 6); TestCase_assertUIntEqual(result, 0x23); // **** **** **** **** *100 011* **** **** TestCase_assertSizeEqual(byteIndex, 2); TestCase_assertUIntEqual(bitIndex, 7); } TEST_SUITE(BitOperationsTest, testReadUInt32BitUnaligned)