diff -r 20caf6efaf07 -r 9bf5945d91ab tests/test_allocator.c --- a/tests/test_allocator.c Thu May 22 22:22:14 2025 +0200 +++ b/tests/test_allocator.c Fri May 23 11:44:44 2025 +0200 @@ -36,6 +36,70 @@ #include "cx/allocator.h" #include +CX_TEST(test_allocator_stdlib_malloc) { + void *test = cxMalloc(cxStdlibAllocator, 16); + CX_TEST_DO { + CX_TEST_ASSERT(test != NULL); + // we cannot assert sth. but valgrind will detect an error + memcpy(test, "0123456789ABCDEF", 16); + } + cxFree(cxStdlibAllocator, test); +} + +CX_TEST(test_allocator_stdlib_calloc) { + char *test = cxCalloc(cxStdlibAllocator, 8, 2); + CX_TEST_DO { + CX_TEST_ASSERT(test != NULL); + for (int i = 0; i < 16; i++) { + CX_TEST_ASSERT(test[i] == 0); + } + } + cxFree(cxStdlibAllocator, test); +} + +CX_TEST(test_allocator_stdlib_realloc) { + char *test = cxCalloc(cxStdlibAllocator, 8, 1); + memcpy(test, "Test", 5); + CX_TEST_DO { + test = cxRealloc(cxStdlibAllocator, test, 16); + CX_TEST_ASSERT(test != NULL); + CX_TEST_ASSERT(0 == strcmp(test, "Test")); + } + cxFree(cxStdlibAllocator, test); +} + +CX_TEST(test_allocator_stdlib_reallocarray) { + char *test = cxCalloc(cxStdlibAllocator, 8, 1); + memcpy(test, "Test", 5); + CX_TEST_DO { + test = cxReallocArray(cxStdlibAllocator, test, 16, 2); + CX_TEST_ASSERT(test != NULL); + CX_TEST_ASSERT(0 == strcmp(test, "Test")); + } + cxFree(cxStdlibAllocator, test); +} + +CX_TEST(test_allocator_stdlib_reallocarray_overflow) { + char *test = cxCalloc(cxStdlibAllocator, 8, 1); + memcpy(test, "Test", 5); + CX_TEST_DO { + void *fail = cxReallocArray(cxStdlibAllocator, test, SIZE_MAX/2, 4); + CX_TEST_ASSERT(errno == EOVERFLOW); + CX_TEST_ASSERT(fail == NULL); + CX_TEST_ASSERT(0 == strcmp(test, "Test")); + } + cxFree(cxStdlibAllocator, test); +} + +CX_TEST(test_allocator_stdlib_free) { + void *test = cxMalloc(cxStdlibAllocator, 16); + CX_TEST_DO { + // we cannot assert sth. but valgrind will detect an error + cxFree(cxStdlibAllocator, test); + CX_TEST_ASSERT(true); + } +} + CX_TEST(test_allocator_default_malloc) { void *test = cxMallocDefault(16); CX_TEST_DO { @@ -205,6 +269,12 @@ CxTestSuite *cx_test_suite_allocator(void) { CxTestSuite *suite = cx_test_suite_new("allocator"); + cx_test_register(suite, test_allocator_stdlib_malloc); + cx_test_register(suite, test_allocator_stdlib_calloc); + cx_test_register(suite, test_allocator_stdlib_realloc); + cx_test_register(suite, test_allocator_stdlib_reallocarray); + cx_test_register(suite, test_allocator_stdlib_reallocarray_overflow); + cx_test_register(suite, test_allocator_stdlib_free); cx_test_register(suite, test_allocator_default_malloc); cx_test_register(suite, test_allocator_default_calloc); cx_test_register(suite, test_allocator_default_realloc);