// test_endian.c // Endian unit test for libutil // Copyright (C) 2021, Jakob Wakeling // MIT Licence #include "../endian.h" #include "unit.h" #include #include int main(void) { { ASSERT("G00T00 BSWAP16", BSWAP16(0xFF00u) == 0x00FFu); ASSERT("G00T02 BSWAP32", BSWAP32(0xFF00FF00u) == 0x00FF00FFu); ASSERT("G00T04 BSWAP64", BSWAP64(0xFF00FF00FF00FF00) == 0x00FF00FF00FF00FF); } { uint8_t a16[2] = { 0xFF, 0x00 }; uint8_t a32[4] = { 0xFF, 0x00, 0x00, 0x00 }; uint8_t a64[8] = { 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; ASSERT("G01T00 LD16LE", LD16LE(a16) == 0x00FFu); ASSERT("G01T01 LD16BE", LD16BE(a16) == 0xFF00u); ASSERT("G01T02 LD32LE", LD32LE(a32) == 0x000000FFu); ASSERT("G01T03 LD32BE", LD32BE(a32) == 0xFF000000u); ASSERT("G01T04 LD64LE", LD64LE(a64) == 0x00000000000000FFu); ASSERT("G01T05 LD64BE", LD64BE(a64) == 0xFF00000000000000u); } { uint16_t a16 = 0x00FFu; uint32_t a32 = 0x000000FFu; uint64_t a64 = 0x00000000000000FFu; uint8_t b16[2]; uint8_t b32[4]; uint8_t b64[8]; ST16LE(b16, a16); ASSERT("G02T00 ST16LE", b16[0] == 0xFFu && b16[1] == 0x00u); ST16BE(b16, a16); ASSERT("G02T01 ST16BE", b16[0] == 0x00u && b16[1] == 0xFFu); ST32LE(b32, a32); ASSERT("G02T02 ST32LE", b32[0] == 0xFFu && b32[1] == 0x00u && b32[2] == 0x00u && b32[3] == 0x00u); ST32BE(b32, a32); ASSERT("G02T03 ST32BE", b32[0] == 0x00u && b32[1] == 0x00u && b32[2] == 0x00u && b32[3] == 0xFFu); ST64LE(b64, a64); ASSERT("G02T04 ST64LE", b64[0] == 0xFFu && b64[1] == 0x00u && b64[2] == 0x00u && b64[3] == 0x00u && b64[4] == 0x00u && b64[5] == 0x00u && b64[6] == 0x00u && b64[7] == 0x00u); ST64BE(b64, a64); ASSERT("G02T05 ST64BE", b64[0] == 0x00u && b64[1] == 0x00u && b64[2] == 0x00u && b64[3] == 0x00u && b64[4] == 0x00u && b64[5] == 0x00u && b64[6] == 0x00u && b64[7] == 0xFFu); } printf("%d of %d tests passed\n", testspassed, testsrun); return testsfailed; }