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)10 START_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)57 Suite *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