Sun, 23 Nov 2025 13:15:19 +0100
optimize sorted insertion by using the infimum instead of the supremum
The reason is that the supremum returns the equal element with the smallest index, and we want the largest.
Therefore, we use the infimum, which already gives us the largest index when there are equal elements, and increase the index by one. The infimum is also guaranteed to exist in that case.
|
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 | #include "util_allocator.h" |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
31 | |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
32 | #include "cx/mempool.h" |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
33 | |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
34 | #include <errno.h> |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
35 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
36 | static unsigned test_mempool_destructor_called; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
37 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
38 | static void test_mempool_destructor(cx_attr_unused void *mem) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
39 | test_mempool_destructor_called++; |
|
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 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
42 | 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
|
43 | int *ctr = data; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
44 | *ctr = *ctr + 1; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
45 | } |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
46 | |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
47 | 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
|
48 | CxMempool *pool = cxMempoolCreateSimple(16); |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
49 | CX_TEST_DO { |
|
1323
deccdb82f24e
improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents:
1299
diff
changeset
|
50 | CX_TEST_ASSERT(pool->destr == NULL); |
|
deccdb82f24e
improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents:
1299
diff
changeset
|
51 | CX_TEST_ASSERT(pool->destr2 == NULL); |
|
deccdb82f24e
improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents:
1299
diff
changeset
|
52 | CX_TEST_ASSERT(pool->destr2_data == NULL); |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
53 | CX_TEST_ASSERT(pool->allocator != NULL); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
54 | CX_TEST_ASSERT(pool->allocator->cl != NULL); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
55 | CX_TEST_ASSERT(pool->allocator->data == pool); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
56 | CX_TEST_ASSERT(pool->allocator->cl->malloc != NULL); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
57 | CX_TEST_ASSERT(pool->allocator->cl->calloc != NULL); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
58 | CX_TEST_ASSERT(pool->allocator->cl->realloc != NULL); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
59 | CX_TEST_ASSERT(pool->allocator->cl->free != NULL); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
60 | CX_TEST_ASSERT(pool->capacity == 16); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
61 | CX_TEST_ASSERT(pool->size == 0); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
62 | CX_TEST_ASSERT(pool->data != NULL); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
63 | } |
|
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
64 | cxMempoolFree(pool); |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
65 | } |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
66 | |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
67 | static CX_TEST_SUBROUTINE(test_mempool_malloc_verify, CxMempool *pool) { |
|
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(cxMalloc(pool->allocator, sizeof(int)) != NULL); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
70 | CX_TEST_ASSERT(pool->size == 2); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
71 | CX_TEST_ASSERT(pool->capacity == 4); |
|
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(cxMalloc(pool->allocator, sizeof(int)) != NULL); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
74 | CX_TEST_ASSERT(pool->size == 4); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
75 | CX_TEST_ASSERT(pool->capacity == 4); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
76 | CX_TEST_ASSERT(cxMalloc(pool->allocator, sizeof(int)) != NULL); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
77 | int *i = cxMalloc(pool->allocator, sizeof(int)); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
78 | CX_TEST_ASSERT(i != NULL); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
79 | *i = 4083914; // let asan / valgrind check |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
80 | CX_TEST_ASSERT(pool->size == 6); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
81 | CX_TEST_ASSERT(pool->capacity >= 6); |
|
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 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
84 | CX_TEST(test_mempool_malloc0) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
85 | CxMempool *pool = cxMempoolCreatePure(4); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
86 | CX_TEST_DO { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
87 | CX_TEST_CALL_SUBROUTINE(test_mempool_malloc_verify, pool); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
88 | } |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
89 | cxMempoolFree(pool); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
90 | } |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
91 | |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
92 | 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
|
93 | CxMempool *pool = cxMempoolCreateSimple(4); |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
94 | CX_TEST_DO { |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
95 | CX_TEST_CALL_SUBROUTINE(test_mempool_malloc_verify, pool); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
96 | } |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
97 | cxMempoolFree(pool); |
|
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 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
100 | CX_TEST(test_mempool_malloc2) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
101 | CxMempool *pool = cxMempoolCreateAdvanced(4); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
102 | CX_TEST_DO { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
103 | CX_TEST_CALL_SUBROUTINE(test_mempool_malloc_verify, pool); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
104 | } |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
105 | cxMempoolFree(pool); |
|
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 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
108 | static CX_TEST_SUBROUTINE(test_mempool_calloc_verify, CxMempool *pool) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
109 | int *test = cxCalloc(pool->allocator, 2, sizeof(int)); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
110 | CX_TEST_ASSERT(test != NULL); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
111 | CX_TEST_ASSERT(test[0] == 0); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
112 | CX_TEST_ASSERT(test[1] == 0); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
113 | #if __GNUC__ > 11 |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
114 | // we want to explicitly test the overflow |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
115 | #pragma GCC diagnostic push |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
116 | #pragma GCC diagnostic ignored "-Walloc-size-larger-than=" |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
117 | #endif |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
118 | errno = 0; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
119 | 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
|
120 | CX_TEST_ASSERT(errno == EOVERFLOW); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
121 | #if __GNUC__ > 11 |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
122 | #pragma GCC diagnostic pop |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
123 | #endif |
|
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 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
126 | CX_TEST(test_mempool_calloc0) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
127 | CxMempool *pool = cxMempoolCreatePure(4); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
128 | CX_TEST_DO { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
129 | 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
|
130 | } |
|
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
131 | cxMempoolFree(pool); |
|
781
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 | |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
134 | 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
|
135 | CxMempool *pool = cxMempoolCreateSimple(4); |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
136 | CX_TEST_DO { |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
137 | CX_TEST_CALL_SUBROUTINE(test_mempool_calloc_verify, pool); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
138 | } |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
139 | cxMempoolFree(pool); |
|
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 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
142 | CX_TEST(test_mempool_calloc2) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
143 | CxMempool *pool = cxMempoolCreateAdvanced(4); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
144 | CX_TEST_DO { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
145 | 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
|
146 | } |
|
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
147 | cxMempoolFree(pool); |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
148 | } |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
149 | |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
150 | 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
|
151 | // use realloc with NULL which shall behave as a malloc |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
152 | int *data = cxRealloc(pool->allocator, NULL, 2*sizeof(int)); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
153 | if (type == CX_MEMPOOL_TYPE_SIMPLE) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
154 | cxMempoolSetDestructor(data, test_mempool_destructor); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
155 | } else if (type == CX_MEMPOOL_TYPE_ADVANCED) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
156 | cxMempoolSetDestructor2(data, test_mempool_destructor2, &test_mempool_destructor_called); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
157 | } |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
158 | *data = 13; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
159 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
160 | // shrink to actual sizeof(int) |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
161 | data = cxRealloc(pool->allocator, data, sizeof(int)); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
162 | CX_TEST_ASSERT(*data == 13); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
163 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
164 | // realloc with the same size (should not do anything) |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
165 | data = cxRealloc(pool->allocator, data, sizeof(int)); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
166 | CX_TEST_ASSERT(*data == 13); |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
167 | |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
168 | // now try hard to trigger a memmove |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
169 | int *rdata = data; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
170 | unsigned n = 1; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
171 | while (rdata == data) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
172 | n <<= 1; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
173 | // eventually the memory should be moved elsewhere |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
174 | 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
|
175 | rdata = cxRealloc(pool->allocator, data, n * sizeof(intptr_t)); |
|
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 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
178 | CX_TEST_ASSERT(*rdata == 13); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
179 | // test if destructor is still intact |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
180 | if (type != CX_MEMPOOL_TYPE_PURE) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
181 | test_mempool_destructor_called = 0; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
182 | cxFree(pool->allocator, rdata); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
183 | CX_TEST_ASSERT(test_mempool_destructor_called == 1); |
|
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 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
187 | CX_TEST(test_mempool_realloc0) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
188 | CxMempool *pool = cxMempoolCreatePure(4); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
189 | CX_TEST_DO { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
190 | 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
|
191 | } |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
192 | cxMempoolFree(pool); |
|
781
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 | |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
195 | CX_TEST(test_mempool_realloc) { |
|
1323
deccdb82f24e
improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents:
1299
diff
changeset
|
196 | CxMempool *pool = cxMempoolCreateSimple(4); |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
197 | CX_TEST_DO { |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
198 | 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
|
199 | } |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
200 | cxMempoolFree(pool); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
201 | } |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
202 | |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
203 | CX_TEST(test_mempool_realloc2) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
204 | CxMempool *pool = cxMempoolCreateAdvanced(4); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
205 | CX_TEST_DO { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
206 | 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
|
207 | } |
|
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
208 | cxMempoolFree(pool); |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
209 | } |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
210 | |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
211 | static CX_TEST_SUBROUTINE(test_mempool_free_verify, CxMempool *pool) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
212 | void *mem1, *mem2; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
213 | mem1 = cxMalloc(pool->allocator, 16); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
214 | cxFree(pool->allocator, mem1); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
215 | CX_TEST_ASSERT(pool->size == 0); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
216 | |
|
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 | mem1 = 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 | mem2 = cxMalloc(pool->allocator, 16); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
222 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
223 | CX_TEST_ASSERT(pool->size == 5); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
224 | // a realloc with size zero shall behave like a free |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
225 | void *freed = cxRealloc(pool->allocator, mem1, 0); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
226 | CX_TEST_ASSERT(freed == NULL); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
227 | CX_TEST_ASSERT(pool->size == 4); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
228 | cxFree(pool->allocator, mem2); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
229 | CX_TEST_ASSERT(pool->size == 3); |
|
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 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
232 | CX_TEST(test_mempool_free0) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
233 | CxMempool *pool = cxMempoolCreatePure(4); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
234 | CX_TEST_DO { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
235 | CX_TEST_CALL_SUBROUTINE(test_mempool_free_verify, pool); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
236 | } |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
237 | cxMempoolFree(pool); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
238 | } |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
239 | |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
240 | 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
|
241 | CxMempool *pool = cxMempoolCreateSimple(4); |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
242 | CX_TEST_DO { |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
243 | CX_TEST_CALL_SUBROUTINE(test_mempool_free_verify, pool); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
244 | } |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
245 | cxMempoolFree(pool); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
246 | } |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
247 | |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
248 | CX_TEST(test_mempool_free2) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
249 | CxMempool *pool = cxMempoolCreateAdvanced(4); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
250 | CX_TEST_DO { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
251 | 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
|
252 | } |
|
993
b642eca4b956
make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents:
985
diff
changeset
|
253 | cxMempoolFree(pool); |
|
781
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 | |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
256 | 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
|
257 | CxMempool *pool = cxMempoolCreateSimple(4); |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
258 | CX_TEST_DO { |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
259 | int *data = cxMalloc(pool->allocator, sizeof(int)); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
260 | *data = 13; |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
261 | cxMempoolSetDestructor(data, test_mempool_destructor); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
262 | CX_TEST_ASSERT(*data == 13); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
263 | test_mempool_destructor_called = 0; |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
264 | cxFree(pool->allocator, data); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
265 | CX_TEST_ASSERT(test_mempool_destructor_called == 1); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
266 | data = cxMalloc(pool->allocator, sizeof(int)); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
267 | 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
|
268 | cxMempoolFree(pool); |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
269 | CX_TEST_ASSERT(test_mempool_destructor_called == 2); |
|
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 | } |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
272 | |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
273 | CX_TEST(test_mempool_destroy2) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
274 | CxMempool *pool = cxMempoolCreateAdvanced(4); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
275 | CX_TEST_DO { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
276 | int *data = cxMalloc(pool->allocator, sizeof(int)); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
277 | int ctr = 0; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
278 | *data = 47; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
279 | cxMempoolSetDestructor2(data, test_mempool_destructor2, &ctr); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
280 | CX_TEST_ASSERT(*data == 47); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
281 | cxFree(pool->allocator, data); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
282 | CX_TEST_ASSERT(ctr == 1); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
283 | data = cxMalloc(pool->allocator, sizeof(int)); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
284 | cxMempoolSetDestructor2(data, test_mempool_destructor2, &ctr); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
285 | cxMempoolFree(pool); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
286 | CX_TEST_ASSERT(ctr == 2); |
|
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 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
290 | CX_TEST(test_mempool_remove_destructor) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
291 | CxMempool *pool = cxMempoolCreateSimple(4); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
292 | CX_TEST_DO { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
293 | int *data = cxMalloc(pool->allocator, sizeof(int)); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
294 | *data = 13; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
295 | cxMempoolSetDestructor(data, test_mempool_destructor); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
296 | CX_TEST_ASSERT(*data == 13); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
297 | cxMempoolRemoveDestructor(data); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
298 | CX_TEST_ASSERT(*data == 13); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
299 | test_mempool_destructor_called = 0; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
300 | cxFree(pool->allocator, data); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
301 | CX_TEST_ASSERT(test_mempool_destructor_called == 0); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
302 | data = cxMalloc(pool->allocator, sizeof(int)); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
303 | *data = 99; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
304 | cxMempoolSetDestructor(data, test_mempool_destructor); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
305 | cxMempoolRemoveDestructor(data); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
306 | CX_TEST_ASSERT(*data == 99); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
307 | cxMempoolFree(pool); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
308 | CX_TEST_ASSERT(test_mempool_destructor_called == 0); |
|
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 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
312 | CX_TEST(test_mempool_remove_destructor2) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
313 | CxMempool *pool = cxMempoolCreateAdvanced(4); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
314 | CX_TEST_DO { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
315 | int *data = cxMalloc(pool->allocator, sizeof(int)); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
316 | int ctr = 0; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
317 | *data = 47; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
318 | cxMempoolSetDestructor2(data, test_mempool_destructor2, &ctr); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
319 | CX_TEST_ASSERT(*data == 47); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
320 | cxMempoolRemoveDestructor2(data); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
321 | CX_TEST_ASSERT(*data == 47); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
322 | cxFree(pool->allocator, data); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
323 | CX_TEST_ASSERT(ctr == 0); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
324 | data = cxMalloc(pool->allocator, sizeof(int)); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
325 | *data = 99; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
326 | cxMempoolSetDestructor2(data, test_mempool_destructor2, &ctr); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
327 | cxMempoolRemoveDestructor2(data); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
328 | CX_TEST_ASSERT(*data == 99); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
329 | cxMempoolFree(pool); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
330 | CX_TEST_ASSERT(ctr == 0); |
|
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 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
334 | 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
|
335 | int *data = cxMalloc(pool->allocator, sizeof(int)); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
336 | int ctr = 0; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
337 | cxMempoolGlobalDestructor(pool, test_mempool_destructor); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
338 | cxMempoolGlobalDestructor2(pool, test_mempool_destructor2, &ctr); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
339 | test_mempool_destructor_called = 0; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
340 | cxFree(pool->allocator, data); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
341 | CX_TEST_ASSERT(ctr == 1); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
342 | CX_TEST_ASSERT(test_mempool_destructor_called == 1); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
343 | data = cxMalloc(pool->allocator, sizeof(int)); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
344 | cxMempoolFree(pool); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
345 | CX_TEST_ASSERT(ctr == 2); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
346 | CX_TEST_ASSERT(test_mempool_destructor_called == 2); |
|
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 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
349 | CX_TEST(test_mempool_global_destructors0) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
350 | CxMempool *pool = cxMempoolCreatePure(4); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
351 | CX_TEST_DO { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
352 | CX_TEST_CALL_SUBROUTINE(test_mempool_global_destructors_verify, pool); |
|
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 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
356 | CX_TEST(test_mempool_global_destructors) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
357 | CxMempool *pool = cxMempoolCreateSimple(4); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
358 | CX_TEST_DO { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
359 | CX_TEST_CALL_SUBROUTINE(test_mempool_global_destructors_verify, pool); |
|
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 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
363 | CX_TEST(test_mempool_global_destructors2) { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
364 | CxMempool *pool = cxMempoolCreateAdvanced(4); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
365 | CX_TEST_DO { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
366 | CX_TEST_CALL_SUBROUTINE(test_mempool_global_destructors_verify, pool); |
|
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 | } |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
369 | |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
370 | CX_TEST(test_mempool_register) { |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
371 | CxMempool *pool = cxMempoolCreateAdvanced(4); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
372 | CX_TEST_DO { |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
373 | int *data = cxMalloc(pool->allocator, sizeof(int)); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
374 | test_mempool_destructor_called = 0; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
375 | cxMempoolSetDestructor2(data, test_mempool_destructor2, &test_mempool_destructor_called); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
376 | int donotfree = 0; |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
377 | cxMempoolRegister(pool, &donotfree, test_mempool_destructor); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
378 | cxMempoolFree(pool); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
379 | CX_TEST_ASSERT(test_mempool_destructor_called == 2); |
|
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 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
383 | 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
|
384 | CxMempool *pool = cxMempoolCreateSimple(4); |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
385 | CX_TEST_DO { |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
386 | int *data = cxMalloc(pool->allocator, sizeof(int)); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
387 | test_mempool_destructor_called = 0; |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
388 | cxMempoolSetDestructor(data, test_mempool_destructor); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
389 | int donotfree = 0; |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
390 | 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
|
391 | cxMempoolFree(pool); |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
392 | CX_TEST_ASSERT(test_mempool_destructor_called == 2); |
|
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 | } |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
395 | |
|
1281
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
396 | CX_TEST(test_mempool_transfer) { |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
397 | CxMempool *src = cxMempoolCreateSimple(4); |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
398 | CxMempool *dest = cxMempoolCreateSimple(4); |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
399 | CX_TEST_DO { |
|
1323
deccdb82f24e
improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents:
1299
diff
changeset
|
400 | // allocate the first object |
|
deccdb82f24e
improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents:
1299
diff
changeset
|
401 | int *c = cxMalloc(src->allocator, sizeof(int)); |
|
1336
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
402 | // check that the destructor functions are also transferred |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
403 | cxMempoolSetDestructor(c, test_mempool_destructor); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
404 | // allocate the second object |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
405 | c = cxMalloc(src->allocator, sizeof(int)); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
406 | cxMempoolSetDestructor(c, test_mempool_destructor); |
|
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 | |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
409 | // check source pool |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
410 | CX_TEST_ASSERT(src->size == 2); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
411 | CX_TEST_ASSERT(src->registered_size == 0); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
412 | const CxAllocator *old_allocator = src->allocator; |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
413 | CX_TEST_ASSERT(old_allocator->data == src); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
414 | |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
415 | // perform transfer |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
416 | int result = cxMempoolTransfer(src, dest); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
417 | CX_TEST_ASSERT(result == 0); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
418 | |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
419 | // check transfer |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
420 | CX_TEST_ASSERT(src->size == 0); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
421 | CX_TEST_ASSERT(dest->size == 2); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
422 | CX_TEST_ASSERT(src->registered_size == 0); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
423 | 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
|
424 | CX_TEST_ASSERT(src->allocator != old_allocator); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
425 | CX_TEST_ASSERT(old_allocator->data == dest); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
426 | |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
427 | // verify that destroying old pool does nothing |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
428 | test_mempool_destructor_called = 0; |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
429 | cxMempoolFree(src); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
430 | CX_TEST_ASSERT(test_mempool_destructor_called == 0); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
431 | |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
432 | // cover illegal arguments |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
433 | result = cxMempoolTransfer(dest, dest); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
434 | CX_TEST_ASSERT(result != 0); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
435 | |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
436 | // verify that destroying new pool calls the destructors |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
437 | // 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
|
438 | cxMempoolFree(dest); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
439 | CX_TEST_ASSERT(test_mempool_destructor_called == 2); |
|
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 | |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
443 | CX_TEST(test_mempool_transfer_with_foreign_memory) { |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
444 | CxMempool *src = cxMempoolCreateSimple(4); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
445 | CxMempool *dest = cxMempoolCreateSimple(4); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
446 | CX_TEST_DO { |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
447 | // allocate the first object |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
448 | 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
|
449 | // allocate the second object |
|
deccdb82f24e
improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents:
1299
diff
changeset
|
450 | c = cxMalloc(src->allocator, sizeof(int)); |
|
1281
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
451 | // 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
|
452 | cxMempoolSetDestructor(c, test_mempool_destructor); |
|
1281
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
453 | // register foreign object |
|
1283
89935fea4b7c
add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents:
1281
diff
changeset
|
454 | c = malloc(sizeof(int)); |
|
1281
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
455 | cxMempoolRegister(src, c, test_mempool_destructor); |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
456 | |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
457 | // check source pool |
|
1323
deccdb82f24e
improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents:
1299
diff
changeset
|
458 | CX_TEST_ASSERT(src->size == 2); |
|
deccdb82f24e
improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents:
1299
diff
changeset
|
459 | CX_TEST_ASSERT(src->registered_size == 1); |
|
1281
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
460 | const CxAllocator *old_allocator = src->allocator; |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
461 | CX_TEST_ASSERT(old_allocator->data == src); |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
462 | |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
463 | // perform transfer |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
464 | int result = cxMempoolTransfer(src, dest); |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
465 | CX_TEST_ASSERT(result == 0); |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
466 | |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
467 | // check transfer |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
468 | CX_TEST_ASSERT(src->size == 0); |
|
1323
deccdb82f24e
improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents:
1299
diff
changeset
|
469 | CX_TEST_ASSERT(dest->size == 2); |
|
deccdb82f24e
improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents:
1299
diff
changeset
|
470 | CX_TEST_ASSERT(src->registered_size == 0); |
|
deccdb82f24e
improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents:
1299
diff
changeset
|
471 | 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
|
472 | CX_TEST_ASSERT(src->allocator != old_allocator); |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
473 | CX_TEST_ASSERT(old_allocator->data == dest); |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
474 | |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
475 | // verify that destroying old pool does nothing |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
476 | test_mempool_destructor_called = 0; |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
477 | cxMempoolFree(src); |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
478 | CX_TEST_ASSERT(test_mempool_destructor_called == 0); |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
479 | |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
480 | // 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
|
481 | // 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
|
482 | cxMempoolFree(dest); |
|
1323
deccdb82f24e
improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents:
1299
diff
changeset
|
483 | 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
|
484 | |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
485 | // free the foreign object |
|
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
486 | free(c); |
|
1283
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 | } |
|
89935fea4b7c
add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents:
1281
diff
changeset
|
489 | |
|
1336
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
490 | CX_TEST(test_mempool_transfer_foreign_memory_only) { |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
491 | CxMempool *src = cxMempoolCreateSimple(4); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
492 | CxMempool *dest = cxMempoolCreateSimple(4); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
493 | int *a = malloc(sizeof(int)); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
494 | int *b = malloc(sizeof(int)); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
495 | CX_TEST_DO { |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
496 | // register foreign objects |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
497 | cxMempoolRegister(src, a, test_mempool_destructor); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
498 | cxMempoolRegister(src, b, test_mempool_destructor); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
499 | |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
500 | // check source pool |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
501 | CX_TEST_ASSERT(src->size == 0); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
502 | CX_TEST_ASSERT(src->registered_size == 2); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
503 | const CxAllocator *old_allocator = src->allocator; |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
504 | CX_TEST_ASSERT(old_allocator->data == src); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
505 | |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
506 | // perform transfer |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
507 | int result = cxMempoolTransfer(src, dest); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
508 | CX_TEST_ASSERT(result == 0); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
509 | |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
510 | // check transfer |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
511 | CX_TEST_ASSERT(src->size == 0); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
512 | CX_TEST_ASSERT(dest->size == 0); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
513 | CX_TEST_ASSERT(src->registered_size == 0); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
514 | 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
|
515 | CX_TEST_ASSERT(src->allocator != old_allocator); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
516 | CX_TEST_ASSERT(old_allocator->data == dest); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
517 | |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
518 | // verify that destroying old pool does nothing |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
519 | test_mempool_destructor_called = 0; |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
520 | cxMempoolFree(src); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
521 | CX_TEST_ASSERT(test_mempool_destructor_called == 0); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
522 | |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
523 | // verify that destroying new pool calls the destructors |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
524 | // 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
|
525 | cxMempoolFree(dest); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
526 | CX_TEST_ASSERT(test_mempool_destructor_called == 2); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
527 | } |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
528 | free(a); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
529 | free(b); |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
530 | } |
|
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
531 | |
|
1283
89935fea4b7c
add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents:
1281
diff
changeset
|
532 | CX_TEST(test_mempool_transfer_object) { |
|
89935fea4b7c
add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents:
1281
diff
changeset
|
533 | CxMempool *src = cxMempoolCreateSimple(4); |
|
89935fea4b7c
add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents:
1281
diff
changeset
|
534 | CxMempool *dest = cxMempoolCreateSimple(4); |
|
89935fea4b7c
add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents:
1281
diff
changeset
|
535 | CX_TEST_DO { |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
536 | int *a = cxMalloc(src->allocator, sizeof(int)); |
|
1283
89935fea4b7c
add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents:
1281
diff
changeset
|
537 | int *b = cxMalloc(src->allocator, sizeof(int)); |
|
89935fea4b7c
add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents:
1281
diff
changeset
|
538 | int *c = malloc(sizeof(int)); |
|
89935fea4b7c
add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents:
1281
diff
changeset
|
539 | cxMempoolRegister(src, c, free); |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
540 | int *d = malloc(sizeof(int)); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
541 | cxMempoolRegister(src, d, free); |
|
1323
deccdb82f24e
improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents:
1299
diff
changeset
|
542 | CX_TEST_ASSERT(src->size == 2); |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
543 | CX_TEST_ASSERT(src->registered_size == 2); |
|
1283
89935fea4b7c
add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents:
1281
diff
changeset
|
544 | |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
545 | int result = cxMempoolTransferObject(src, dest, a); |
|
1283
89935fea4b7c
add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents:
1281
diff
changeset
|
546 | CX_TEST_ASSERT(result == 0); |
|
1323
deccdb82f24e
improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents:
1299
diff
changeset
|
547 | CX_TEST_ASSERT(src->size == 1); |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
548 | CX_TEST_ASSERT(src->registered_size == 2); |
|
1283
89935fea4b7c
add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents:
1281
diff
changeset
|
549 | CX_TEST_ASSERT(dest->size == 1); |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
550 | CX_TEST_ASSERT(dest->registered_size == 0); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
551 | result = cxMempoolTransferObject(src, dest, a); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
552 | CX_TEST_ASSERT(result != 0); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
553 | CX_TEST_ASSERT(src->size == 1); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
554 | CX_TEST_ASSERT(src->registered_size == 2); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
555 | CX_TEST_ASSERT(dest->size == 1); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
556 | CX_TEST_ASSERT(dest->registered_size == 0); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
557 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
558 | // can also transfer foreign memory this way |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
559 | result = cxMempoolTransferObject(src, dest, c); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
560 | CX_TEST_ASSERT(result == 0); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
561 | CX_TEST_ASSERT(src->size == 1); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
562 | CX_TEST_ASSERT(src->registered_size == 1); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
563 | CX_TEST_ASSERT(dest->size == 1); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
564 | CX_TEST_ASSERT(dest->registered_size == 1); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
565 | |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
566 | // src==dest is an error |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
567 | result = cxMempoolTransferObject(dest, dest, b); |
|
1283
89935fea4b7c
add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents:
1281
diff
changeset
|
568 | CX_TEST_ASSERT(result != 0); |
|
1323
deccdb82f24e
improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents:
1299
diff
changeset
|
569 | CX_TEST_ASSERT(src->size == 1); |
|
1283
89935fea4b7c
add cxMempoolTransferObject() - resolves #640
Mike Becker <universe@uap-core.de>
parents:
1281
diff
changeset
|
570 | CX_TEST_ASSERT(dest->size == 1); |
|
1323
deccdb82f24e
improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents:
1299
diff
changeset
|
571 | |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
572 | // 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
|
573 | cxFree(src->allocator, b); |
|
1281
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
574 | } |
|
1323
deccdb82f24e
improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents:
1299
diff
changeset
|
575 | cxMempoolFree(src); |
|
deccdb82f24e
improve mempool destructor support (1/3)
Mike Becker <universe@uap-core.de>
parents:
1299
diff
changeset
|
576 | cxMempoolFree(dest); |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
577 | // let valgrind check that everything else worked |
|
1281
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
578 | } |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
579 | |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
580 | CxTestSuite *cx_test_suite_mempool(void) { |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
581 | CxTestSuite *suite = cx_test_suite_new("mempool"); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
582 | |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
583 | cx_test_register(suite, test_mempool_create); |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
584 | cx_test_register(suite, test_mempool_malloc0); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
585 | cx_test_register(suite, test_mempool_calloc0); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
586 | cx_test_register(suite, test_mempool_realloc0); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
587 | cx_test_register(suite, test_mempool_free0); |
|
781
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
588 | cx_test_register(suite, test_mempool_malloc); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
589 | cx_test_register(suite, test_mempool_calloc); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
590 | cx_test_register(suite, test_mempool_realloc); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
591 | cx_test_register(suite, test_mempool_free); |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
592 | cx_test_register(suite, test_mempool_destroy); |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
593 | cx_test_register(suite, test_mempool_malloc2); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
594 | cx_test_register(suite, test_mempool_calloc2); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
595 | cx_test_register(suite, test_mempool_realloc2); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
596 | cx_test_register(suite, test_mempool_free2); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
597 | cx_test_register(suite, test_mempool_destroy2); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
598 | cx_test_register(suite, test_mempool_remove_destructor); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
599 | cx_test_register(suite, test_mempool_remove_destructor2); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
600 | cx_test_register(suite, test_mempool_global_destructors0); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
601 | cx_test_register(suite, test_mempool_global_destructors); |
|
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
602 | 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
|
603 | cx_test_register(suite, test_mempool_register); |
|
1328
2cf66dee40b8
stabilizes mempool implementation
Mike Becker <universe@uap-core.de>
parents:
1325
diff
changeset
|
604 | cx_test_register(suite, test_mempool_register2); |
|
1281
45746a08c59e
add cxMempoolTransfer() - partially resolves #640
Mike Becker <universe@uap-core.de>
parents:
1178
diff
changeset
|
605 | cx_test_register(suite, test_mempool_transfer); |
|
1336
5acc23b518aa
fix incorrect memcpy() in cxMempoolTransfer()
Mike Becker <universe@uap-core.de>
parents:
1328
diff
changeset
|
606 | 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
|
607 | 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
|
608 | 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
|
609 | |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
610 | return suite; |
|
a786b0a89b37
migrate mempool tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
611 | } |