#include #include #include #include DEFTEST(transmute_copy) { static const u64 EXPECTED = 18446743474098365025lu; struct { char i[4]; i32 u; } input = { .i = {'a','b','c','d'}, .u = -140 }; let output = TRANSMUTE(input, u64); TRACE("Transmute test, expected 0x%lx, got 0x%lx", EXPECTED, output); //XXX: TODO: This test will fail on Big Endian machines. TEST_ASSERT(output == EXPECTED); TRACE("Alignment of output: %lu, alignment of input: %lu", _Alignof(output), _Alignof(input)); let input2 = TRANSMUTE(output, var(input)); TRACE("Transmute output passed, trying to transmute back"); TEST_ASSERT( memcmp(&input2, &input, sizeof(input)) == 0 ); return TEST_OK; } RUNTEST_DEBUG(transmute_copy);