From: Collin Funk Date: Fri, 17 May 2024 03:49:56 +0000 (-0700) Subject: byteswap tests: Strengthen tests. X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=c26bdc4c466515ee07ec5fa33b97628ea87e6cf9;p=gnulib.git byteswap tests: Strengthen tests. * modules/byteswap-tests (Depends-on): Add stdint. * tests/test-byteswap.c (test_bswap_constant, test_bswap_eval_once) (test_bswap_double): New functions. (main): Use them. --- diff --git a/ChangeLog b/ChangeLog index ddfe701dd4..6436ddfb81 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2024-05-16 Collin Funk + + byteswap tests: Strengthen tests. + * modules/byteswap-tests (Depends-on): Add stdint. + * tests/test-byteswap.c (test_bswap_constant, test_bswap_eval_once) + (test_bswap_double): New functions. + (main): Use them. + 2024-05-16 Collin Funk byteswap: Use inline functions instead of macros. diff --git a/modules/byteswap-tests b/modules/byteswap-tests index be7b65947e..64baf0e404 100644 --- a/modules/byteswap-tests +++ b/modules/byteswap-tests @@ -3,6 +3,7 @@ tests/test-byteswap.c tests/macros.h Depends-on: +stdint configure.ac: diff --git a/tests/test-byteswap.c b/tests/test-byteswap.c index 85f7fd4193..60b3ea31e2 100644 --- a/tests/test-byteswap.c +++ b/tests/test-byteswap.c @@ -19,14 +19,52 @@ #include #include +#include #include "macros.h" +/* Test bswap functions with constant values. */ +static void +test_bswap_constant (void) +{ + ASSERT (bswap_16 (UINT16_C (0x1234)) == UINT16_C (0x3412)); + ASSERT (bswap_32 (UINT32_C (0x12345678)) == UINT32_C (0x78563412)); + ASSERT (bswap_64 (UINT64_C (0x1234567890ABCDEF)) + == UINT64_C (0xEFCDAB9078563412)); +} + +/* Test that the bswap functions evaluate their arguments once. */ +static void +test_bswap_eval_once (void) +{ + uint16_t value_1 = 0; + uint32_t value_2 = 0; + uint64_t value_3 = 0; + + ASSERT (bswap_16 (value_1++) == 0); + ASSERT (bswap_32 (value_2++) == 0); + ASSERT (bswap_64 (value_3++) == 0); + + ASSERT (value_1 == 1); + ASSERT (value_2 == 1); + ASSERT (value_3 == 1); +} + +/* Test that the bswap functions accept floating-point arguments. */ +static void +test_bswap_double (void) +{ + ASSERT (bswap_16 (0.0) == 0); + ASSERT (bswap_32 (0.0) == 0); + ASSERT (bswap_64 (0.0) == 0); +} + int -main () +main (void) { - ASSERT (bswap_16 (0xABCD) == 0xCDAB); - ASSERT (bswap_32 (0xDEADBEEF) == 0xEFBEADDE); + test_bswap_constant (); + test_bswap_eval_once (); + test_bswap_double (); return 0; }