tests/test_allocator.c

Tue, 16 Dec 2025 21:33:58 +0100

author
Mike Becker <universe@uap-core.de>
date
Tue, 16 Dec 2025 21:33:58 +0100
changeset 1617
d4385f35f8b0
parent 1332
dd5d2402d161
permissions
-rw-r--r--

add tests for freeing memory with a reallocation of size zero

782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1 /*
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3 *
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
4 * Copyright 2023 Mike Becker, Olaf Wintermann All rights reserved.
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
5 *
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
8 *
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
11 *
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
15 *
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
27 */
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
28
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
29 #include "cx/test.h"
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
30
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
31 #if __GNUC__
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
32 // we want to perform overflow tests, but we don't want warnings about them
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
33 #define __alloc_size__(...) // NOLINT(*-reserved-identifier)
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
34 #endif
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
35
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
36 #include "cx/allocator.h"
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
37 #include <errno.h>
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
38
1326
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
39 CX_TEST(test_allocator_stdlib_malloc) {
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
40 void *test = cxMalloc(cxStdlibAllocator, 16);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
41 CX_TEST_DO {
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
42 CX_TEST_ASSERT(test != NULL);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
43 // we cannot assert sth. but valgrind will detect an error
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
44 memcpy(test, "0123456789ABCDEF", 16);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
45 }
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
46 cxFree(cxStdlibAllocator, test);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
47 }
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
48
1332
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
49 CX_TEST(test_allocator_stdlib_zalloc) {
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
50 void *test = cxZalloc(cxStdlibAllocator, 16);
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
51 CX_TEST_DO {
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
52 CX_TEST_ASSERT(test != NULL);
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
53 CX_TEST_ASSERT(0 == memcmp(test, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16));
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
54 }
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
55 cxFree(cxStdlibAllocator, test);
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
56 }
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
57
1326
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
58 CX_TEST(test_allocator_stdlib_calloc) {
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
59 char *test = cxCalloc(cxStdlibAllocator, 8, 2);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
60 CX_TEST_DO {
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
61 CX_TEST_ASSERT(test != NULL);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
62 for (int i = 0; i < 16; i++) {
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
63 CX_TEST_ASSERT(test[i] == 0);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
64 }
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
65 }
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
66 cxFree(cxStdlibAllocator, test);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
67 }
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
68
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
69 CX_TEST(test_allocator_stdlib_realloc) {
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
70 char *test = cxCalloc(cxStdlibAllocator, 8, 1);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
71 memcpy(test, "Test", 5);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
72 CX_TEST_DO {
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
73 test = cxRealloc(cxStdlibAllocator, test, 16);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
74 CX_TEST_ASSERT(test != NULL);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
75 CX_TEST_ASSERT(0 == strcmp(test, "Test"));
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
76 }
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
77 cxFree(cxStdlibAllocator, test);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
78 }
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
79
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
80 CX_TEST(test_allocator_stdlib_reallocarray) {
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
81 char *test = cxCalloc(cxStdlibAllocator, 8, 1);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
82 memcpy(test, "Test", 5);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
83 CX_TEST_DO {
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
84 test = cxReallocArray(cxStdlibAllocator, test, 16, 2);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
85 CX_TEST_ASSERT(test != NULL);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
86 CX_TEST_ASSERT(0 == strcmp(test, "Test"));
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
87 }
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
88 cxFree(cxStdlibAllocator, test);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
89 }
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
90
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
91 CX_TEST(test_allocator_stdlib_reallocarray_overflow) {
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
92 char *test = cxCalloc(cxStdlibAllocator, 8, 1);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
93 memcpy(test, "Test", 5);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
94 CX_TEST_DO {
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
95 void *fail = cxReallocArray(cxStdlibAllocator, test, SIZE_MAX/2, 4);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
96 CX_TEST_ASSERT(errno == EOVERFLOW);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
97 CX_TEST_ASSERT(fail == NULL);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
98 CX_TEST_ASSERT(0 == strcmp(test, "Test"));
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
99 }
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
100 cxFree(cxStdlibAllocator, test);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
101 }
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
102
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
103 CX_TEST(test_allocator_stdlib_free) {
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
104 void *test = cxMalloc(cxStdlibAllocator, 16);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
105 CX_TEST_DO {
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
106 // we cannot assert sth. but valgrind will detect an error
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
107 cxFree(cxStdlibAllocator, test);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
108 CX_TEST_ASSERT(true);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
109 }
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
110 }
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
111
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
112 CX_TEST(test_allocator_default_malloc) {
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
113 void *test = cxMallocDefault(16);
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
114 CX_TEST_DO {
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
115 CX_TEST_ASSERT(test != NULL);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
116 // we cannot assert sth. but valgrind will detect an error
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
117 memcpy(test, "0123456789ABCDEF", 16);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
118 }
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
119 cxFreeDefault(test);
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
120 }
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
121
1332
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
122 CX_TEST(test_allocator_default_zalloc) {
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
123 void *test = cxZallocDefault(16);
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
124 CX_TEST_DO {
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
125 CX_TEST_ASSERT(test != NULL);
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
126 CX_TEST_ASSERT(0 == memcmp(test, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16));
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
127 }
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
128 cxFreeDefault(test);
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
129 }
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
130
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
131 CX_TEST(test_allocator_default_calloc) {
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
132 char *test = cxCallocDefault(8, 2);
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
133 CX_TEST_DO {
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
134 CX_TEST_ASSERT(test != NULL);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
135 for (int i = 0; i < 16; i++) {
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
136 CX_TEST_ASSERT(test[i] == 0);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
137 }
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
138 }
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
139 cxFreeDefault(test);
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
140 }
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
141
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
142 CX_TEST(test_allocator_default_realloc) {
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
143 char *test = cxCallocDefault(8, 1);
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
144 memcpy(test, "Test", 5);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
145 CX_TEST_DO {
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
146 test = cxReallocDefault(test, 16);
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
147 CX_TEST_ASSERT(test != NULL);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
148 CX_TEST_ASSERT(0 == strcmp(test, "Test"));
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
149 }
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
150 cxFreeDefault(test);
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
151 }
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
152
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
153 CX_TEST(test_allocator_default_reallocarray) {
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
154 char *test = cxCallocDefault(8, 1);
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
155 memcpy(test, "Test", 5);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
156 CX_TEST_DO {
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
157 test = cxReallocArrayDefault(test, 16, 2);
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
158 CX_TEST_ASSERT(test != NULL);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
159 CX_TEST_ASSERT(0 == strcmp(test, "Test"));
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
160 }
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
161 cxFreeDefault(test);
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
162 }
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
163
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
164 CX_TEST(test_allocator_default_reallocarray_overflow) {
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
165 char *test = cxCallocDefault(8, 1);
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
166 memcpy(test, "Test", 5);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
167 CX_TEST_DO {
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
168 void *fail = cxReallocArrayDefault(test, SIZE_MAX/2, 4);
1040
1ecf4dbbc60c add some more overflow treatment and make sure to set errno properly
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
169 CX_TEST_ASSERT(errno == EOVERFLOW);
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
170 CX_TEST_ASSERT(fail == NULL);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
171 CX_TEST_ASSERT(0 == strcmp(test, "Test"));
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
172 }
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
173 cxFreeDefault(test);
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
174 }
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
175
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
176 CX_TEST(test_allocator_default_free) {
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
177 void *test = cxMallocDefault(16);
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
178 CX_TEST_DO {
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
179 // we cannot assert sth. but valgrind will detect an error
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
180 cxFreeDefault(test);
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
181 CX_TEST_ASSERT(true);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
182 }
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
183 }
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
184
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
185 CX_TEST(test_allocator_reallocate) {
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
186 char *test = cxCallocDefault(8, 1);
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
187 memcpy(test, "Test", 5);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
188 CX_TEST_DO {
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
189 int ret = cxReallocateDefault(&test, 16);
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
190 CX_TEST_ASSERT(ret == 0);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
191 CX_TEST_ASSERT(test != NULL);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
192 CX_TEST_ASSERT(0 == strcmp(test, "Test"));
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
193 }
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
194 cxFreeDefault(test);
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
195 }
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
196
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
197 CX_TEST(test_allocator_reallocate_low_level) {
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
198 void *test = calloc(8, 1);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
199 memcpy(test, "Test", 5);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
200 CX_TEST_DO {
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
201 int ret = cx_reallocate(&test, 16);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
202 CX_TEST_ASSERT(ret == 0);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
203 CX_TEST_ASSERT(test != NULL);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
204 CX_TEST_ASSERT(0 == strcmp(test, "Test"));
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
205 }
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
206 free(test);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
207 }
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
208
1617
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
209 CX_TEST(test_allocator_reallocate_frees) {
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
210 CX_TEST_DO {
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
211 void *test = cxCallocDefault(8, 1);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
212 CX_TEST_ASSERT(test != NULL);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
213 int ret = cxReallocateDefault(&test, 0);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
214 CX_TEST_ASSERT(ret == 0);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
215 CX_TEST_ASSERT(test == NULL);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
216 }
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
217 }
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
218
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
219 CX_TEST(test_allocator_reallocate_low_level_frees) {
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
220 CX_TEST_DO {
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
221 void *test = calloc(8, 1);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
222 CX_TEST_ASSERT(test != NULL);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
223 int ret = cx_reallocate(&test, 0);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
224 CX_TEST_ASSERT(ret == 0);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
225 CX_TEST_ASSERT(test == NULL);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
226 }
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
227 }
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
228
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
229 CX_TEST(test_allocator_reallocatearray) {
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
230 char *test = cxCallocDefault(8, 1);
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
231 memcpy(test, "Test", 5);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
232 CX_TEST_DO {
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
233 int ret = cxReallocateArrayDefault(&test, 16, 2);
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
234 CX_TEST_ASSERT(ret == 0);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
235 CX_TEST_ASSERT(test != NULL);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
236 CX_TEST_ASSERT(0 == strcmp(test, "Test"));
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
237 }
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
238 cxFreeDefault(test);
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
239 }
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
240
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
241 CX_TEST(test_allocator_reallocatearray_overflow) {
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
242 char *test = cxCallocDefault(8, 1);
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
243 memcpy(test, "Test", 5);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
244 CX_TEST_DO {
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
245 int ret = cxReallocateArrayDefault(&test, SIZE_MAX/2, 4);
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
246 CX_TEST_ASSERT(ret != 0);
1040
1ecf4dbbc60c add some more overflow treatment and make sure to set errno properly
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
247 CX_TEST_ASSERT(errno == EOVERFLOW);
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
248 CX_TEST_ASSERT(test != NULL);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
249 CX_TEST_ASSERT(0 == strcmp(test, "Test"));
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
250 }
1319
aa1f580f8f59 add convenience macros for using the default allocator - relates to #669
Mike Becker <universe@uap-core.de>
parents: 1318
diff changeset
251 cxFreeDefault(test);
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
252 }
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
253
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
254 CX_TEST(test_allocator_reallocatearray_low_level) {
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
255 char *test = calloc(8, 1);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
256 memcpy(test, "Test", 5);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
257 CX_TEST_DO {
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
258 int ret = cx_reallocatearray(&test, 16, 2);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
259 CX_TEST_ASSERT(ret == 0);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
260 CX_TEST_ASSERT(test != NULL);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
261 CX_TEST_ASSERT(0 == strcmp(test, "Test"));
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
262 }
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
263 free(test);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
264 }
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
265
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
266 CX_TEST(test_allocator_reallocatearray_low_level_overflow) {
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
267 char *test = calloc(8, 1);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
268 memcpy(test, "Test", 5);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
269 CX_TEST_DO {
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
270 int ret = cx_reallocatearray(&test, SIZE_MAX/2, 4);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
271 CX_TEST_ASSERT(ret != 0);
1040
1ecf4dbbc60c add some more overflow treatment and make sure to set errno properly
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
272 CX_TEST_ASSERT(errno == EOVERFLOW);
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
273 CX_TEST_ASSERT(test != NULL);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
274 CX_TEST_ASSERT(0 == strcmp(test, "Test"));
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
275 }
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
276 free(test);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
277 }
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
278
1617
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
279 CX_TEST(test_allocator_reallocatearray_frees) {
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
280 CX_TEST_DO {
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
281 char *test = cxCallocDefault(8, 1);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
282 CX_TEST_ASSERT(test != NULL);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
283 int ret = cxReallocateArrayDefault(&test, 0, 1);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
284 CX_TEST_ASSERT(ret == 0);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
285 CX_TEST_ASSERT(test == NULL);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
286 }
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
287 }
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
288
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
289 CX_TEST(test_allocator_reallocatearray_low_level_frees) {
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
290 CX_TEST_DO {
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
291 char *test = calloc(8, 1);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
292 CX_TEST_ASSERT(test != NULL);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
293 int ret = cx_reallocatearray(&test, 0, 1);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
294 CX_TEST_ASSERT(ret == 0);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
295 CX_TEST_ASSERT(test == NULL);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
296 }
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
297 }
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
298
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
299 static void *test_allocator_mock_failing_realloc(
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 963
diff changeset
300 cx_attr_unused void *p,
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 963
diff changeset
301 cx_attr_unused void *d,
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 963
diff changeset
302 cx_attr_unused size_t n
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
303 ) {
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
304 return NULL;
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
305 }
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
306
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
307 CX_TEST(test_allocator_reallocate_fails) {
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
308 // Mock an allocator that always returns NULL on realloc
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
309 cx_allocator_class mock_cl;
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
310 mock_cl.realloc = test_allocator_mock_failing_realloc;
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
311 CxAllocator mock = {&mock_cl, NULL};
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
312
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
313 void *test = calloc(8, 1);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
314 memcpy(test, "Test", 5);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
315 void *original = test;
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
316 CX_TEST_DO {
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
317 int ret = cxReallocate(&mock, &test, 16);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
318 // non-zero return code because of the failure
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
319 CX_TEST_ASSERT(ret != 0);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
320 // the test pointer was not changed and still points to the same memory
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
321 CX_TEST_ASSERT(test == original);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
322 CX_TEST_ASSERT(0 == strcmp(test, "Test"));
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
323 }
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
324 free(test);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
325 }
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
326
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
327 CxTestSuite *cx_test_suite_allocator(void) {
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
328 CxTestSuite *suite = cx_test_suite_new("allocator");
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
329
1326
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
330 cx_test_register(suite, test_allocator_stdlib_malloc);
1332
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
331 cx_test_register(suite, test_allocator_stdlib_zalloc);
1326
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
332 cx_test_register(suite, test_allocator_stdlib_calloc);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
333 cx_test_register(suite, test_allocator_stdlib_realloc);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
334 cx_test_register(suite, test_allocator_stdlib_reallocarray);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
335 cx_test_register(suite, test_allocator_stdlib_reallocarray_overflow);
9bf5945d91ab fix test coverage for cxStdlibAllocator
Mike Becker <universe@uap-core.de>
parents: 1319
diff changeset
336 cx_test_register(suite, test_allocator_stdlib_free);
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
337 cx_test_register(suite, test_allocator_default_malloc);
1332
dd5d2402d161 implement zalloc() - resolves #679
Mike Becker <universe@uap-core.de>
parents: 1326
diff changeset
338 cx_test_register(suite, test_allocator_default_zalloc);
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
339 cx_test_register(suite, test_allocator_default_calloc);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
340 cx_test_register(suite, test_allocator_default_realloc);
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
341 cx_test_register(suite, test_allocator_default_reallocarray);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
342 cx_test_register(suite, test_allocator_default_reallocarray_overflow);
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
343 cx_test_register(suite, test_allocator_default_free);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
344 cx_test_register(suite, test_allocator_reallocate);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
345 cx_test_register(suite, test_allocator_reallocate_fails);
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
346 cx_test_register(suite, test_allocator_reallocate_low_level);
1617
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
347 cx_test_register(suite, test_allocator_reallocate_frees);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
348 cx_test_register(suite, test_allocator_reallocate_low_level_frees);
963
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
349 cx_test_register(suite, test_allocator_reallocatearray);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
350 cx_test_register(suite, test_allocator_reallocatearray_overflow);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
351 cx_test_register(suite, test_allocator_reallocatearray_low_level);
2f601274bbac add reallocarray() like functions - resolves #468
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
352 cx_test_register(suite, test_allocator_reallocatearray_low_level_overflow);
1617
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
353 cx_test_register(suite, test_allocator_reallocatearray_frees);
d4385f35f8b0 add tests for freeing memory with a reallocation of size zero
Mike Becker <universe@uap-core.de>
parents: 1332
diff changeset
354 cx_test_register(suite, test_allocator_reallocatearray_low_level_frees);
782
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
355
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
356 return suite;
74d777455e96 migrate allocator tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
357 }

mercurial