tests/test_allocator.c

changeset 1326
9bf5945d91ab
parent 1319
aa1f580f8f59
equal deleted inserted replaced
1325:20caf6efaf07 1326:9bf5945d91ab
34 #endif 34 #endif
35 35
36 #include "cx/allocator.h" 36 #include "cx/allocator.h"
37 #include <errno.h> 37 #include <errno.h>
38 38
39 CX_TEST(test_allocator_stdlib_malloc) {
40 void *test = cxMalloc(cxStdlibAllocator, 16);
41 CX_TEST_DO {
42 CX_TEST_ASSERT(test != NULL);
43 // we cannot assert sth. but valgrind will detect an error
44 memcpy(test, "0123456789ABCDEF", 16);
45 }
46 cxFree(cxStdlibAllocator, test);
47 }
48
49 CX_TEST(test_allocator_stdlib_calloc) {
50 char *test = cxCalloc(cxStdlibAllocator, 8, 2);
51 CX_TEST_DO {
52 CX_TEST_ASSERT(test != NULL);
53 for (int i = 0; i < 16; i++) {
54 CX_TEST_ASSERT(test[i] == 0);
55 }
56 }
57 cxFree(cxStdlibAllocator, test);
58 }
59
60 CX_TEST(test_allocator_stdlib_realloc) {
61 char *test = cxCalloc(cxStdlibAllocator, 8, 1);
62 memcpy(test, "Test", 5);
63 CX_TEST_DO {
64 test = cxRealloc(cxStdlibAllocator, test, 16);
65 CX_TEST_ASSERT(test != NULL);
66 CX_TEST_ASSERT(0 == strcmp(test, "Test"));
67 }
68 cxFree(cxStdlibAllocator, test);
69 }
70
71 CX_TEST(test_allocator_stdlib_reallocarray) {
72 char *test = cxCalloc(cxStdlibAllocator, 8, 1);
73 memcpy(test, "Test", 5);
74 CX_TEST_DO {
75 test = cxReallocArray(cxStdlibAllocator, test, 16, 2);
76 CX_TEST_ASSERT(test != NULL);
77 CX_TEST_ASSERT(0 == strcmp(test, "Test"));
78 }
79 cxFree(cxStdlibAllocator, test);
80 }
81
82 CX_TEST(test_allocator_stdlib_reallocarray_overflow) {
83 char *test = cxCalloc(cxStdlibAllocator, 8, 1);
84 memcpy(test, "Test", 5);
85 CX_TEST_DO {
86 void *fail = cxReallocArray(cxStdlibAllocator, test, SIZE_MAX/2, 4);
87 CX_TEST_ASSERT(errno == EOVERFLOW);
88 CX_TEST_ASSERT(fail == NULL);
89 CX_TEST_ASSERT(0 == strcmp(test, "Test"));
90 }
91 cxFree(cxStdlibAllocator, test);
92 }
93
94 CX_TEST(test_allocator_stdlib_free) {
95 void *test = cxMalloc(cxStdlibAllocator, 16);
96 CX_TEST_DO {
97 // we cannot assert sth. but valgrind will detect an error
98 cxFree(cxStdlibAllocator, test);
99 CX_TEST_ASSERT(true);
100 }
101 }
102
39 CX_TEST(test_allocator_default_malloc) { 103 CX_TEST(test_allocator_default_malloc) {
40 void *test = cxMallocDefault(16); 104 void *test = cxMallocDefault(16);
41 CX_TEST_DO { 105 CX_TEST_DO {
42 CX_TEST_ASSERT(test != NULL); 106 CX_TEST_ASSERT(test != NULL);
43 // we cannot assert sth. but valgrind will detect an error 107 // we cannot assert sth. but valgrind will detect an error
203 } 267 }
204 268
205 CxTestSuite *cx_test_suite_allocator(void) { 269 CxTestSuite *cx_test_suite_allocator(void) {
206 CxTestSuite *suite = cx_test_suite_new("allocator"); 270 CxTestSuite *suite = cx_test_suite_new("allocator");
207 271
272 cx_test_register(suite, test_allocator_stdlib_malloc);
273 cx_test_register(suite, test_allocator_stdlib_calloc);
274 cx_test_register(suite, test_allocator_stdlib_realloc);
275 cx_test_register(suite, test_allocator_stdlib_reallocarray);
276 cx_test_register(suite, test_allocator_stdlib_reallocarray_overflow);
277 cx_test_register(suite, test_allocator_stdlib_free);
208 cx_test_register(suite, test_allocator_default_malloc); 278 cx_test_register(suite, test_allocator_default_malloc);
209 cx_test_register(suite, test_allocator_default_calloc); 279 cx_test_register(suite, test_allocator_default_calloc);
210 cx_test_register(suite, test_allocator_default_realloc); 280 cx_test_register(suite, test_allocator_default_realloc);
211 cx_test_register(suite, test_allocator_default_reallocarray); 281 cx_test_register(suite, test_allocator_default_reallocarray);
212 cx_test_register(suite, test_allocator_default_reallocarray_overflow); 282 cx_test_register(suite, test_allocator_default_reallocarray_overflow);

mercurial