1 // Copyright (C) 2007-2020 Codership Oy <info@codership.com> 2 3 // $Id$ 4 5 #include <stdint.h> 6 #include <check.h> 7 #include "gu_bswap_test.h" 8 #include "../src/gu_byteswap.h" 9 START_TEST(gu_bswap_test)10START_TEST (gu_bswap_test) 11 { 12 // need volatile to prevent compile-time optimization 13 volatile uint16_t s = 0x1234; 14 volatile uint32_t i = 0x12345678; 15 volatile uint64_t l = 0x1827364554637281LL; 16 17 uint16_t sle, sbe; 18 uint32_t ile, ibe; 19 uint64_t lle, lbe; 20 21 // first conversion 22 sle = gu_le16(s); sbe = gu_be16(s); 23 ile = gu_le32(i); ibe = gu_be32(i); 24 lle = gu_le64(l); lbe = gu_be64(l); 25 26 #if __BYTE_ORDER == __LITTLE_ENDIAN 27 ck_assert(s == sle); 28 ck_assert(i == ile); 29 ck_assert(l == lle); 30 ck_assert(s != sbe); 31 ck_assert(i != ibe); 32 ck_assert(l != lbe); 33 #else 34 ck_assert(s != sle); 35 ck_assert(i != ile); 36 ck_assert(l != lle); 37 ck_assert(s == sbe); 38 ck_assert(i == ibe); 39 ck_assert(l == lbe); 40 #endif /* __BYTE_ORDER */ 41 42 // second conversion 43 sle = gu_le16(sle); sbe = gu_be16(sbe); 44 ile = gu_le32(ile); ibe = gu_be32(ibe); 45 lle = gu_le64(lle); lbe = gu_be64(lbe); 46 47 ck_assert(s == sle); 48 ck_assert(i == ile); 49 ck_assert(l == lle); 50 ck_assert(s == sbe); 51 ck_assert(i == ibe); 52 ck_assert(l == lbe); 53 54 } 55 END_TEST 56 gu_bswap_suite(void)57Suite *gu_bswap_suite(void) 58 { 59 Suite *s = suite_create("Galera byteswap functions"); 60 TCase *tc = tcase_create("gu_bswap"); 61 62 suite_add_tcase (s, tc); 63 tcase_add_test (tc, gu_bswap_test); 64 return s; 65 } 66 67