+2024-05-16 Collin Funk <collin.funk1@gmail.com>
+
+ 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 <collin.funk1@gmail.com>
byteswap: Use inline functions instead of macros.
#include <config.h>
#include <byteswap.h>
+#include <stdint.h>
#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;
}