--- a/tests/test_utils.c Fri Nov 01 18:33:16 2024 +0100 +++ b/tests/test_utils.c Sat Nov 02 13:38:51 2024 +0100 @@ -95,137 +95,11 @@ cxBufferDestroy(&target); } -CX_TEST(test_szmul) { - size_t r; - int e; - - CX_TEST_DO { - e = cx_szmul(5, 7, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == 35); - - size_t s = SIZE_MAX & ~3; - - e = cx_szmul(s / 4, 2, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == s / 2); - - e = cx_szmul(2, s / 4, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == s / 2); - - e = cx_szmul(s / 4, 4, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == s); - - e = cx_szmul(4, s / 4, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == s); - - e = cx_szmul(s / 4, 5, &r); - CX_TEST_ASSERT(e != 0); - - e = cx_szmul(5, s / 4, &r); - CX_TEST_ASSERT(e != 0); - - e = cx_szmul(SIZE_MAX - 4, 0, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == 0); - - e = cx_szmul(0, SIZE_MAX - 1, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == 0); - - e = cx_szmul(SIZE_MAX, 0, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == 0); - - e = cx_szmul(0, SIZE_MAX, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == 0); - - e = cx_szmul(0, 0, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == 0); - } -} - -#ifdef CX_SZMUL_BUILTIN - -// also test the custom implementation -#undef CX_SZMUL_BUILTIN - -#include "../src/szmul.c" - -#define CX_SZMUL_BUILTIN - -CX_TEST(test_szmul_impl) { - size_t r; - int e; - - CX_TEST_DO { - e = cx_szmul_impl(5, 7, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == 35); - - size_t s = SIZE_MAX & ~3; - - e = cx_szmul_impl(s / 4, 2, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == s / 2); - - e = cx_szmul_impl(2, s / 4, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == s / 2); - - e = cx_szmul_impl(s / 4, 4, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == s); - - e = cx_szmul_impl(4, s / 4, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == s); - - e = cx_szmul_impl(s / 4, 5, &r); - CX_TEST_ASSERT(e != 0); - - e = cx_szmul_impl(5, s / 4, &r); - CX_TEST_ASSERT(e != 0); - - e = cx_szmul_impl(SIZE_MAX - 4, 0, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == 0); - - e = cx_szmul_impl(0, SIZE_MAX - 1, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == 0); - - e = cx_szmul_impl(SIZE_MAX, 0, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == 0); - - e = cx_szmul_impl(0, SIZE_MAX, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == 0); - - e = cx_szmul_impl(0, 0, &r); - CX_TEST_ASSERT(e == 0); - CX_TEST_ASSERT(r == 0); - } -} - -#endif // CX_SZMUL_BUILTIN - - CxTestSuite *cx_test_suite_utils(void) { CxTestSuite *suite = cx_test_suite_new("utils"); cx_test_register(suite, test_stream_bncopy); cx_test_register(suite, test_stream_ncopy); - cx_test_register(suite, test_szmul); -#ifdef CX_SZMUL_BUILTIN - cx_test_register(suite, test_szmul_impl); -#endif return suite; }