tests/test_mempool.c

Sat, 13 Dec 2025 16:47:07 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sat, 13 Dec 2025 16:47:07 +0100
changeset 1592
c1e17411004f
parent 1591
ef2f47fc5f0c
permissions
-rw-r--r--

optimize cxJsonCompare in case both value pointers are identical

781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1 /*
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3 *
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
4 * Copyright 2023 Mike Becker, Olaf Wintermann All rights reserved.
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
5 *
a786b0a89b37 migrate mempool 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
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
8 *
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
11 *
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
a786b0a89b37 migrate mempool 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
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
15 *
a786b0a89b37 migrate mempool 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"
a786b0a89b37 migrate mempool 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
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
a786b0a89b37 migrate mempool 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
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
a786b0a89b37 migrate mempool 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
a786b0a89b37 migrate mempool 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
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
a786b0a89b37 migrate mempool 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
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
27 */
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
28
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
29 #include "cx/test.h"
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
30
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
31 #include "cx/mempool.h"
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
32
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
33 #include <errno.h>
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
34
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
35 static unsigned test_mempool_destructor_called;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
36
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
37 static void test_mempool_destructor(cx_attr_unused void *mem) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
38 test_mempool_destructor_called++;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
39 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
40
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
41 static void test_mempool_destructor2(void *data, cx_attr_unused void *mem) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
42 int *ctr = data;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
43 *ctr = *ctr + 1;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
44 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
45
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
46 CX_TEST(test_mempool_create) {
1178
9998cfb4a65b change name of cxBasicMempoolCreate() to cxMempoolCreateSimple() - fixes #590
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
47 CxMempool *pool = cxMempoolCreateSimple(16);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
48 CX_TEST_DO {
1323
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
49 CX_TEST_ASSERT(pool->destr == NULL);
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
50 CX_TEST_ASSERT(pool->destr2 == NULL);
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
51 CX_TEST_ASSERT(pool->destr2_data == NULL);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
52 CX_TEST_ASSERT(pool->allocator != NULL);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
53 CX_TEST_ASSERT(pool->allocator->cl != NULL);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
54 CX_TEST_ASSERT(pool->allocator->data == pool);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
55 CX_TEST_ASSERT(pool->allocator->cl->malloc != NULL);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
56 CX_TEST_ASSERT(pool->allocator->cl->calloc != NULL);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
57 CX_TEST_ASSERT(pool->allocator->cl->realloc != NULL);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
58 CX_TEST_ASSERT(pool->allocator->cl->free != NULL);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
59 CX_TEST_ASSERT(pool->capacity == 16);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
60 CX_TEST_ASSERT(pool->size == 0);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
61 CX_TEST_ASSERT(pool->data != NULL);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
62 }
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
63 cxMempoolFree(pool);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
64 }
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
65
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
66 static CX_TEST_SUBROUTINE(test_mempool_malloc_verify, CxMempool *pool) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
67 CX_TEST_ASSERT(cxMalloc(pool->allocator, sizeof(int)) != NULL);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
68 CX_TEST_ASSERT(cxMalloc(pool->allocator, sizeof(int)) != NULL);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
69 CX_TEST_ASSERT(pool->size == 2);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
70 CX_TEST_ASSERT(pool->capacity == 4);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
71 CX_TEST_ASSERT(cxMalloc(pool->allocator, sizeof(int)) != NULL);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
72 CX_TEST_ASSERT(cxMalloc(pool->allocator, sizeof(int)) != NULL);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
73 CX_TEST_ASSERT(pool->size == 4);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
74 CX_TEST_ASSERT(pool->capacity == 4);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
75 CX_TEST_ASSERT(cxMalloc(pool->allocator, sizeof(int)) != NULL);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
76 int *i = cxMalloc(pool->allocator, sizeof(int));
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
77 CX_TEST_ASSERT(i != NULL);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
78 *i = 4083914; // let asan / valgrind check
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
79 CX_TEST_ASSERT(pool->size == 6);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
80 CX_TEST_ASSERT(pool->capacity >= 6);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
81 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
82
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
83 CX_TEST(test_mempool_malloc0) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
84 CxMempool *pool = cxMempoolCreatePure(4);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
85 CX_TEST_DO {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
86 CX_TEST_CALL_SUBROUTINE(test_mempool_malloc_verify, pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
87 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
88 cxMempoolFree(pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
89 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
90
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
91 CX_TEST(test_mempool_malloc) {
1178
9998cfb4a65b change name of cxBasicMempoolCreate() to cxMempoolCreateSimple() - fixes #590
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
92 CxMempool *pool = cxMempoolCreateSimple(4);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
93 CX_TEST_DO {
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
94 CX_TEST_CALL_SUBROUTINE(test_mempool_malloc_verify, pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
95 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
96 cxMempoolFree(pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
97 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
98
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
99 CX_TEST(test_mempool_malloc2) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
100 CxMempool *pool = cxMempoolCreateAdvanced(4);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
101 CX_TEST_DO {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
102 CX_TEST_CALL_SUBROUTINE(test_mempool_malloc_verify, pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
103 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
104 cxMempoolFree(pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
105 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
106
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
107 static CX_TEST_SUBROUTINE(test_mempool_calloc_verify, CxMempool *pool) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
108 int *test = cxCalloc(pool->allocator, 2, sizeof(int));
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
109 CX_TEST_ASSERT(test != NULL);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
110 CX_TEST_ASSERT(test[0] == 0);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
111 CX_TEST_ASSERT(test[1] == 0);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
112 #if __GNUC__ > 11
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
113 // we want to explicitly test the overflow
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
114 #pragma GCC diagnostic push
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
115 #pragma GCC diagnostic ignored "-Walloc-size-larger-than="
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
116 #endif
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
117 errno = 0;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
118 CX_TEST_ASSERT(NULL == cxCalloc(pool->allocator, SIZE_MAX / 2, sizeof(int)));
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
119 CX_TEST_ASSERT(errno == EOVERFLOW);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
120 #if __GNUC__ > 11
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
121 #pragma GCC diagnostic pop
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
122 #endif
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
123 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
124
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
125 CX_TEST(test_mempool_calloc0) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
126 CxMempool *pool = cxMempoolCreatePure(4);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
127 CX_TEST_DO {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
128 CX_TEST_CALL_SUBROUTINE(test_mempool_calloc_verify, pool);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
129 }
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
130 cxMempoolFree(pool);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
131 }
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
132
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
133 CX_TEST(test_mempool_calloc) {
1178
9998cfb4a65b change name of cxBasicMempoolCreate() to cxMempoolCreateSimple() - fixes #590
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
134 CxMempool *pool = cxMempoolCreateSimple(4);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
135 CX_TEST_DO {
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
136 CX_TEST_CALL_SUBROUTINE(test_mempool_calloc_verify, pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
137 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
138 cxMempoolFree(pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
139 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
140
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
141 CX_TEST(test_mempool_calloc2) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
142 CxMempool *pool = cxMempoolCreateAdvanced(4);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
143 CX_TEST_DO {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
144 CX_TEST_CALL_SUBROUTINE(test_mempool_calloc_verify, pool);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
145 }
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
146 cxMempoolFree(pool);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
147 }
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
148
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
149 static CX_TEST_SUBROUTINE(test_mempool_realloc_verify, CxMempool *pool, enum cx_mempool_type type) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
150 // use realloc with NULL which shall behave as a malloc
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
151 int *data = cxRealloc(pool->allocator, NULL, 2*sizeof(int));
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
152 if (type == CX_MEMPOOL_TYPE_SIMPLE) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
153 cxMempoolSetDestructor(data, test_mempool_destructor);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
154 } else if (type == CX_MEMPOOL_TYPE_ADVANCED) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
155 cxMempoolSetDestructor2(data, test_mempool_destructor2, &test_mempool_destructor_called);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
156 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
157 *data = 13;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
158
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
159 // shrink to actual sizeof(int)
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
160 data = cxRealloc(pool->allocator, data, sizeof(int));
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
161 CX_TEST_ASSERT(*data == 13);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
162
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
163 // realloc with the same size (should not do anything)
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
164 data = cxRealloc(pool->allocator, data, sizeof(int));
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
165 CX_TEST_ASSERT(*data == 13);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
166
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
167 // now try hard to trigger a memmove
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
168 int *rdata = data;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
169 unsigned n = 1;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
170 while (rdata == data) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
171 n <<= 1;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
172 // eventually the memory should be moved elsewhere
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
173 CX_TEST_ASSERTM(n < 65536, "Reallocation attempt failed - test not executable");
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
174 rdata = cxRealloc(pool->allocator, data, n * sizeof(intptr_t));
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
175 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
176
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
177 CX_TEST_ASSERT(*rdata == 13);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
178 // test if destructor is still intact
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
179 if (type != CX_MEMPOOL_TYPE_PURE) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
180 test_mempool_destructor_called = 0;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
181 cxFree(pool->allocator, rdata);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
182 CX_TEST_ASSERT(test_mempool_destructor_called == 1);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
183 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
184 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
185
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
186 CX_TEST(test_mempool_realloc0) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
187 CxMempool *pool = cxMempoolCreatePure(4);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
188 CX_TEST_DO {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
189 CX_TEST_CALL_SUBROUTINE(test_mempool_realloc_verify, pool, CX_MEMPOOL_TYPE_PURE);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
190 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
191 cxMempoolFree(pool);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
192 }
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
193
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
194 CX_TEST(test_mempool_realloc) {
1323
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
195 CxMempool *pool = cxMempoolCreateSimple(4);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
196 CX_TEST_DO {
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
197 CX_TEST_CALL_SUBROUTINE(test_mempool_realloc_verify, pool, CX_MEMPOOL_TYPE_SIMPLE);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
198 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
199 cxMempoolFree(pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
200 }
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
201
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
202 CX_TEST(test_mempool_realloc2) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
203 CxMempool *pool = cxMempoolCreateAdvanced(4);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
204 CX_TEST_DO {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
205 CX_TEST_CALL_SUBROUTINE(test_mempool_realloc_verify, pool, CX_MEMPOOL_TYPE_ADVANCED);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
206 }
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
207 cxMempoolFree(pool);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
208 }
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
209
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
210 static CX_TEST_SUBROUTINE(test_mempool_free_verify, CxMempool *pool) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
211 void *mem1, *mem2;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
212 mem1 = cxMalloc(pool->allocator, 16);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
213 cxFree(pool->allocator, mem1);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
214 CX_TEST_ASSERT(pool->size == 0);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
215
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
216 mem1 = cxMalloc(pool->allocator, 16);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
217 mem1 = cxMalloc(pool->allocator, 16);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
218 mem1 = cxMalloc(pool->allocator, 16);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
219 mem2 = cxMalloc(pool->allocator, 16);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
220 mem2 = cxMalloc(pool->allocator, 16);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
221
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
222 CX_TEST_ASSERT(pool->size == 5);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
223 // a realloc with size zero shall behave like a free
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
224 void *freed = cxRealloc(pool->allocator, mem1, 0);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
225 CX_TEST_ASSERT(freed == NULL);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
226 CX_TEST_ASSERT(pool->size == 4);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
227 cxFree(pool->allocator, mem2);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
228 CX_TEST_ASSERT(pool->size == 3);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
229 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
230
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
231 CX_TEST(test_mempool_free0) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
232 CxMempool *pool = cxMempoolCreatePure(4);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
233 CX_TEST_DO {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
234 CX_TEST_CALL_SUBROUTINE(test_mempool_free_verify, pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
235 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
236 cxMempoolFree(pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
237 }
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
238
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
239 CX_TEST(test_mempool_free) {
1178
9998cfb4a65b change name of cxBasicMempoolCreate() to cxMempoolCreateSimple() - fixes #590
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
240 CxMempool *pool = cxMempoolCreateSimple(4);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
241 CX_TEST_DO {
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
242 CX_TEST_CALL_SUBROUTINE(test_mempool_free_verify, pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
243 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
244 cxMempoolFree(pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
245 }
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
246
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
247 CX_TEST(test_mempool_free2) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
248 CxMempool *pool = cxMempoolCreateAdvanced(4);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
249 CX_TEST_DO {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
250 CX_TEST_CALL_SUBROUTINE(test_mempool_free_verify, pool);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
251 }
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
252 cxMempoolFree(pool);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
253 }
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
254
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
255 CX_TEST(test_mempool_destroy) {
1178
9998cfb4a65b change name of cxBasicMempoolCreate() to cxMempoolCreateSimple() - fixes #590
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
256 CxMempool *pool = cxMempoolCreateSimple(4);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
257 CX_TEST_DO {
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
258 int *data = cxMalloc(pool->allocator, sizeof(int));
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
259 *data = 13;
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
260 cxMempoolSetDestructor(data, test_mempool_destructor);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
261 CX_TEST_ASSERT(*data == 13);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
262 test_mempool_destructor_called = 0;
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
263 cxFree(pool->allocator, data);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
264 CX_TEST_ASSERT(test_mempool_destructor_called == 1);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
265 data = cxMalloc(pool->allocator, sizeof(int));
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
266 cxMempoolSetDestructor(data, test_mempool_destructor);
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
267 cxMempoolFree(pool);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
268 CX_TEST_ASSERT(test_mempool_destructor_called == 2);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
269 }
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
270 }
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
271
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
272 CX_TEST(test_mempool_destroy2) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
273 CxMempool *pool = cxMempoolCreateAdvanced(4);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
274 CX_TEST_DO {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
275 int *data = cxMalloc(pool->allocator, sizeof(int));
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
276 int ctr = 0;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
277 *data = 47;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
278 cxMempoolSetDestructor2(data, test_mempool_destructor2, &ctr);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
279 CX_TEST_ASSERT(*data == 47);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
280 cxFree(pool->allocator, data);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
281 CX_TEST_ASSERT(ctr == 1);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
282 data = cxMalloc(pool->allocator, sizeof(int));
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
283 cxMempoolSetDestructor2(data, test_mempool_destructor2, &ctr);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
284 cxMempoolFree(pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
285 CX_TEST_ASSERT(ctr == 2);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
286 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
287 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
288
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
289 CX_TEST(test_mempool_remove_destructor) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
290 CxMempool *pool = cxMempoolCreateSimple(4);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
291 CX_TEST_DO {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
292 int *data = cxMalloc(pool->allocator, sizeof(int));
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
293 *data = 13;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
294 cxMempoolSetDestructor(data, test_mempool_destructor);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
295 CX_TEST_ASSERT(*data == 13);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
296 cxMempoolRemoveDestructor(data);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
297 CX_TEST_ASSERT(*data == 13);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
298 test_mempool_destructor_called = 0;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
299 cxFree(pool->allocator, data);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
300 CX_TEST_ASSERT(test_mempool_destructor_called == 0);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
301 data = cxMalloc(pool->allocator, sizeof(int));
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
302 *data = 99;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
303 cxMempoolSetDestructor(data, test_mempool_destructor);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
304 cxMempoolRemoveDestructor(data);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
305 CX_TEST_ASSERT(*data == 99);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
306 cxMempoolFree(pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
307 CX_TEST_ASSERT(test_mempool_destructor_called == 0);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
308 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
309 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
310
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
311 CX_TEST(test_mempool_remove_destructor2) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
312 CxMempool *pool = cxMempoolCreateAdvanced(4);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
313 CX_TEST_DO {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
314 int *data = cxMalloc(pool->allocator, sizeof(int));
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
315 int ctr = 0;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
316 *data = 47;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
317 cxMempoolSetDestructor2(data, test_mempool_destructor2, &ctr);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
318 CX_TEST_ASSERT(*data == 47);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
319 cxMempoolRemoveDestructor2(data);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
320 CX_TEST_ASSERT(*data == 47);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
321 cxFree(pool->allocator, data);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
322 CX_TEST_ASSERT(ctr == 0);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
323 data = cxMalloc(pool->allocator, sizeof(int));
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
324 *data = 99;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
325 cxMempoolSetDestructor2(data, test_mempool_destructor2, &ctr);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
326 cxMempoolRemoveDestructor2(data);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
327 CX_TEST_ASSERT(*data == 99);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
328 cxMempoolFree(pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
329 CX_TEST_ASSERT(ctr == 0);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
330 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
331 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
332
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
333 static CX_TEST_SUBROUTINE(test_mempool_global_destructors_verify, CxMempool *pool) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
334 int *data = cxMalloc(pool->allocator, sizeof(int));
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
335 int ctr = 0;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
336 cxMempoolGlobalDestructor(pool, test_mempool_destructor);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
337 cxMempoolGlobalDestructor2(pool, test_mempool_destructor2, &ctr);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
338 test_mempool_destructor_called = 0;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
339 cxFree(pool->allocator, data);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
340 CX_TEST_ASSERT(ctr == 1);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
341 CX_TEST_ASSERT(test_mempool_destructor_called == 1);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
342 data = cxMalloc(pool->allocator, sizeof(int));
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
343 cxMempoolFree(pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
344 CX_TEST_ASSERT(ctr == 2);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
345 CX_TEST_ASSERT(test_mempool_destructor_called == 2);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
346 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
347
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
348 CX_TEST(test_mempool_global_destructors0) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
349 CxMempool *pool = cxMempoolCreatePure(4);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
350 CX_TEST_DO {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
351 CX_TEST_CALL_SUBROUTINE(test_mempool_global_destructors_verify, pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
352 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
353 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
354
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
355 CX_TEST(test_mempool_global_destructors) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
356 CxMempool *pool = cxMempoolCreateSimple(4);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
357 CX_TEST_DO {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
358 CX_TEST_CALL_SUBROUTINE(test_mempool_global_destructors_verify, pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
359 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
360 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
361
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
362 CX_TEST(test_mempool_global_destructors2) {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
363 CxMempool *pool = cxMempoolCreateAdvanced(4);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
364 CX_TEST_DO {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
365 CX_TEST_CALL_SUBROUTINE(test_mempool_global_destructors_verify, pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
366 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
367 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
368
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
369 CX_TEST(test_mempool_register) {
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
370 CxMempool *pool = cxMempoolCreateAdvanced(4);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
371 CX_TEST_DO {
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
372 int *data = cxMalloc(pool->allocator, sizeof(int));
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
373 test_mempool_destructor_called = 0;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
374 cxMempoolSetDestructor2(data, test_mempool_destructor2, &test_mempool_destructor_called);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
375 int donotfree = 0;
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
376 cxMempoolRegister(pool, &donotfree, test_mempool_destructor);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
377 cxMempoolFree(pool);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
378 CX_TEST_ASSERT(test_mempool_destructor_called == 2);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
379 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
380 }
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
381
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
382 CX_TEST(test_mempool_register2) {
1178
9998cfb4a65b change name of cxBasicMempoolCreate() to cxMempoolCreateSimple() - fixes #590
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
383 CxMempool *pool = cxMempoolCreateSimple(4);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
384 CX_TEST_DO {
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
385 int *data = cxMalloc(pool->allocator, sizeof(int));
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
386 test_mempool_destructor_called = 0;
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
387 cxMempoolSetDestructor(data, test_mempool_destructor);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
388 int donotfree = 0;
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
389 cxMempoolRegister2(pool, &donotfree, test_mempool_destructor2, &test_mempool_destructor_called);
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
390 cxMempoolFree(pool);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
391 CX_TEST_ASSERT(test_mempool_destructor_called == 2);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
392 }
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
393 }
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
394
1281
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
395 CX_TEST(test_mempool_transfer) {
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
396 CxMempool *src = cxMempoolCreateSimple(4);
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
397 CxMempool *dest = cxMempoolCreateSimple(4);
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
398 CX_TEST_DO {
1323
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
399 // allocate the first object
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
400 int *c = cxMalloc(src->allocator, sizeof(int));
1336
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
401 // check that the destructor functions are also transferred
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
402 cxMempoolSetDestructor(c, test_mempool_destructor);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
403 // allocate the second object
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
404 c = cxMalloc(src->allocator, sizeof(int));
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
405 cxMempoolSetDestructor(c, test_mempool_destructor);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
406
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
407
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
408 // check source pool
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
409 CX_TEST_ASSERT(src->size == 2);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
410 CX_TEST_ASSERT(src->registered_size == 0);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
411 const CxAllocator *old_allocator = src->allocator;
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
412 CX_TEST_ASSERT(old_allocator->data == src);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
413
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
414 // perform transfer
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
415 int result = cxMempoolTransfer(src, dest);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
416 CX_TEST_ASSERT(result == 0);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
417
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
418 // check transfer
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
419 CX_TEST_ASSERT(src->size == 0);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
420 CX_TEST_ASSERT(dest->size == 2);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
421 CX_TEST_ASSERT(src->registered_size == 0);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
422 CX_TEST_ASSERT(dest->registered_size == 1); // the old allocator
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
423 CX_TEST_ASSERT(src->allocator != old_allocator);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
424 CX_TEST_ASSERT(old_allocator->data == dest);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
425
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
426 // verify that destroying old pool does nothing
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
427 test_mempool_destructor_called = 0;
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
428 cxMempoolFree(src);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
429 CX_TEST_ASSERT(test_mempool_destructor_called == 0);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
430
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
431 // cover illegal arguments
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
432 result = cxMempoolTransfer(dest, dest);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
433 CX_TEST_ASSERT(result != 0);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
434
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
435 // verify that destroying new pool calls the destructors
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
436 // but only two times (the old allocator has a different destructor)
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
437 cxMempoolFree(dest);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
438 CX_TEST_ASSERT(test_mempool_destructor_called == 2);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
439 }
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
440 }
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
441
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
442 CX_TEST(test_mempool_transfer_with_foreign_memory) {
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
443 CxMempool *src = cxMempoolCreateSimple(4);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
444 CxMempool *dest = cxMempoolCreateSimple(4);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
445 CX_TEST_DO {
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
446 // allocate the first object
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
447 int *c = cxMalloc(src->allocator, sizeof(int));
1323
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
448 // allocate the second object
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
449 c = cxMalloc(src->allocator, sizeof(int));
1281
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
450 // check that the destructor functions are also transferred
1323
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
451 cxMempoolSetDestructor(c, test_mempool_destructor);
1281
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
452 // register foreign object
1283
89935fea4b7c add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents: 1281
diff changeset
453 c = malloc(sizeof(int));
1281
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
454 cxMempoolRegister(src, c, test_mempool_destructor);
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
455
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
456 // check source pool
1323
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
457 CX_TEST_ASSERT(src->size == 2);
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
458 CX_TEST_ASSERT(src->registered_size == 1);
1281
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
459 const CxAllocator *old_allocator = src->allocator;
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
460 CX_TEST_ASSERT(old_allocator->data == src);
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
461
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
462 // perform transfer
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
463 int result = cxMempoolTransfer(src, dest);
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
464 CX_TEST_ASSERT(result == 0);
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
465
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
466 // check transfer
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
467 CX_TEST_ASSERT(src->size == 0);
1323
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
468 CX_TEST_ASSERT(dest->size == 2);
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
469 CX_TEST_ASSERT(src->registered_size == 0);
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
470 CX_TEST_ASSERT(dest->registered_size == 2); // 1 object + old allocator
1281
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
471 CX_TEST_ASSERT(src->allocator != old_allocator);
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
472 CX_TEST_ASSERT(old_allocator->data == dest);
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
473
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
474 // verify that destroying old pool does nothing
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
475 test_mempool_destructor_called = 0;
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
476 cxMempoolFree(src);
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
477 CX_TEST_ASSERT(test_mempool_destructor_called == 0);
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
478
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
479 // verify that destroying new pool calls the destructors
1323
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
480 // but only two times (the old allocator has a different destructor)
1281
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
481 cxMempoolFree(dest);
1323
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
482 CX_TEST_ASSERT(test_mempool_destructor_called == 2);
1281
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
483
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
484 // free the foreign object
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
485 free(c);
1283
89935fea4b7c add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents: 1281
diff changeset
486 }
89935fea4b7c add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents: 1281
diff changeset
487 }
89935fea4b7c add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents: 1281
diff changeset
488
1336
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
489 CX_TEST(test_mempool_transfer_foreign_memory_only) {
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
490 CxMempool *src = cxMempoolCreateSimple(4);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
491 CxMempool *dest = cxMempoolCreateSimple(4);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
492 int *a = malloc(sizeof(int));
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
493 int *b = malloc(sizeof(int));
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
494 CX_TEST_DO {
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
495 // register foreign objects
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
496 cxMempoolRegister(src, a, test_mempool_destructor);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
497 cxMempoolRegister(src, b, test_mempool_destructor);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
498
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
499 // check source pool
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
500 CX_TEST_ASSERT(src->size == 0);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
501 CX_TEST_ASSERT(src->registered_size == 2);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
502 const CxAllocator *old_allocator = src->allocator;
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
503 CX_TEST_ASSERT(old_allocator->data == src);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
504
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
505 // perform transfer
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
506 int result = cxMempoolTransfer(src, dest);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
507 CX_TEST_ASSERT(result == 0);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
508
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
509 // check transfer
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
510 CX_TEST_ASSERT(src->size == 0);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
511 CX_TEST_ASSERT(dest->size == 0);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
512 CX_TEST_ASSERT(src->registered_size == 0);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
513 CX_TEST_ASSERT(dest->registered_size == 3); // 2 objects + old allocator
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
514 CX_TEST_ASSERT(src->allocator != old_allocator);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
515 CX_TEST_ASSERT(old_allocator->data == dest);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
516
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
517 // verify that destroying old pool does nothing
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
518 test_mempool_destructor_called = 0;
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
519 cxMempoolFree(src);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
520 CX_TEST_ASSERT(test_mempool_destructor_called == 0);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
521
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
522 // verify that destroying new pool calls the destructors
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
523 // but only two times (the old allocator has a different destructor)
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
524 cxMempoolFree(dest);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
525 CX_TEST_ASSERT(test_mempool_destructor_called == 2);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
526 }
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
527 free(a);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
528 free(b);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
529 }
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
530
1283
89935fea4b7c add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents: 1281
diff changeset
531 CX_TEST(test_mempool_transfer_object) {
89935fea4b7c add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents: 1281
diff changeset
532 CxMempool *src = cxMempoolCreateSimple(4);
89935fea4b7c add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents: 1281
diff changeset
533 CxMempool *dest = cxMempoolCreateSimple(4);
89935fea4b7c add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents: 1281
diff changeset
534 CX_TEST_DO {
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
535 int *a = cxMalloc(src->allocator, sizeof(int));
1283
89935fea4b7c add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents: 1281
diff changeset
536 int *b = cxMalloc(src->allocator, sizeof(int));
89935fea4b7c add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents: 1281
diff changeset
537 int *c = malloc(sizeof(int));
89935fea4b7c add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents: 1281
diff changeset
538 cxMempoolRegister(src, c, free);
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
539 int *d = malloc(sizeof(int));
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
540 cxMempoolRegister(src, d, free);
1323
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
541 CX_TEST_ASSERT(src->size == 2);
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
542 CX_TEST_ASSERT(src->registered_size == 2);
1283
89935fea4b7c add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents: 1281
diff changeset
543
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
544 int result = cxMempoolTransferObject(src, dest, a);
1283
89935fea4b7c add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents: 1281
diff changeset
545 CX_TEST_ASSERT(result == 0);
1323
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
546 CX_TEST_ASSERT(src->size == 1);
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
547 CX_TEST_ASSERT(src->registered_size == 2);
1283
89935fea4b7c add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents: 1281
diff changeset
548 CX_TEST_ASSERT(dest->size == 1);
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
549 CX_TEST_ASSERT(dest->registered_size == 0);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
550 result = cxMempoolTransferObject(src, dest, a);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
551 CX_TEST_ASSERT(result != 0);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
552 CX_TEST_ASSERT(src->size == 1);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
553 CX_TEST_ASSERT(src->registered_size == 2);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
554 CX_TEST_ASSERT(dest->size == 1);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
555 CX_TEST_ASSERT(dest->registered_size == 0);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
556
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
557 // can also transfer foreign memory this way
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
558 result = cxMempoolTransferObject(src, dest, c);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
559 CX_TEST_ASSERT(result == 0);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
560 CX_TEST_ASSERT(src->size == 1);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
561 CX_TEST_ASSERT(src->registered_size == 1);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
562 CX_TEST_ASSERT(dest->size == 1);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
563 CX_TEST_ASSERT(dest->registered_size == 1);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
564
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
565 // src==dest is an error
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
566 result = cxMempoolTransferObject(dest, dest, b);
1283
89935fea4b7c add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents: 1281
diff changeset
567 CX_TEST_ASSERT(result != 0);
1323
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
568 CX_TEST_ASSERT(src->size == 1);
1283
89935fea4b7c add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents: 1281
diff changeset
569 CX_TEST_ASSERT(dest->size == 1);
1323
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
570
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
571 // check that we don't die when we free memory that's still in the source pool
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
572 cxFree(src->allocator, b);
1281
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
573 }
1323
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
574 cxMempoolFree(src);
deccdb82f24e improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents: 1299
diff changeset
575 cxMempoolFree(dest);
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
576 // let valgrind check that everything else worked
1281
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
577 }
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
578
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
579 CxTestSuite *cx_test_suite_mempool(void) {
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
580 CxTestSuite *suite = cx_test_suite_new("mempool");
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
581
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
582 cx_test_register(suite, test_mempool_create);
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
583 cx_test_register(suite, test_mempool_malloc0);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
584 cx_test_register(suite, test_mempool_calloc0);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
585 cx_test_register(suite, test_mempool_realloc0);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
586 cx_test_register(suite, test_mempool_free0);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
587 cx_test_register(suite, test_mempool_malloc);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
588 cx_test_register(suite, test_mempool_calloc);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
589 cx_test_register(suite, test_mempool_realloc);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
590 cx_test_register(suite, test_mempool_free);
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
591 cx_test_register(suite, test_mempool_destroy);
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
592 cx_test_register(suite, test_mempool_malloc2);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
593 cx_test_register(suite, test_mempool_calloc2);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
594 cx_test_register(suite, test_mempool_realloc2);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
595 cx_test_register(suite, test_mempool_free2);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
596 cx_test_register(suite, test_mempool_destroy2);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
597 cx_test_register(suite, test_mempool_remove_destructor);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
598 cx_test_register(suite, test_mempool_remove_destructor2);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
599 cx_test_register(suite, test_mempool_global_destructors0);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
600 cx_test_register(suite, test_mempool_global_destructors);
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
601 cx_test_register(suite, test_mempool_global_destructors2);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
602 cx_test_register(suite, test_mempool_register);
1328
2cf66dee40b8 stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents: 1325
diff changeset
603 cx_test_register(suite, test_mempool_register2);
1281
45746a08c59e add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents: 1178
diff changeset
604 cx_test_register(suite, test_mempool_transfer);
1336
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
605 cx_test_register(suite, test_mempool_transfer_with_foreign_memory);
5acc23b518aa fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents: 1328
diff changeset
606 cx_test_register(suite, test_mempool_transfer_foreign_memory_only);
1283
89935fea4b7c add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents: 1281
diff changeset
607 cx_test_register(suite, test_mempool_transfer_object);
781
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
608
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
609 return suite;
a786b0a89b37 migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff changeset
610 }

mercurial