From c26bdc4c466515ee07ec5fa33b97628ea87e6cf9 Mon Sep 17 00:00:00 2001 From: Collin Funk Date: Thu, 16 May 2024 20:49:56 -0700 Subject: [PATCH] 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. --- ChangeLog | 8 ++++++++ modules/byteswap-tests | 1 + tests/test-byteswap.c | 44 +++++++++++++++++++++++++++++++++++++++--- 3 files changed, 50 insertions(+), 3 deletions(-) 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; } -- 2.39.5