diff options
-rw-r--r-- | mempool/test/mempool_test.c | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/mempool/test/mempool_test.c b/mempool/test/mempool_test.c index d257922..e6c24a4 100644 --- a/mempool/test/mempool_test.c +++ b/mempool/test/mempool_test.c | |||
@@ -18,12 +18,20 @@ static int sum(test_pool* pool) { | |||
18 | return sum; | 18 | return sum; |
19 | } | 19 | } |
20 | 20 | ||
21 | // Create a pool. | 21 | // Create a statically-backed pool. |
22 | TEST_CASE(mempool_create) { | 22 | TEST_CASE(mempool_create) { |
23 | test_pool pool; | 23 | test_pool pool; |
24 | mempool_make(&pool); | 24 | mempool_make(&pool); |
25 | } | 25 | } |
26 | 26 | ||
27 | // Create a dynamically-backed pool. | ||
28 | TEST_CASE(mem_create_dyn) { | ||
29 | DEF_MEMPOOL_DYN(dyn_pool, int); | ||
30 | |||
31 | dyn_pool pool; | ||
32 | mempool_make_dyn(&pool, NUM_BLOCKS, sizeof(int)); | ||
33 | } | ||
34 | |||
27 | // Allocate all N blocks. | 35 | // Allocate all N blocks. |
28 | TEST_CASE(mempool_allocate_until_full) { | 36 | TEST_CASE(mempool_allocate_until_full) { |
29 | test_pool pool; | 37 | test_pool pool; |
@@ -154,4 +162,27 @@ TEST_CASE(mempool_get_block) { | |||
154 | } | 162 | } |
155 | } | 163 | } |
156 | 164 | ||
165 | // Clear and re-use an allocator. | ||
166 | TEST_CASE(mem_clear_then_reuse) { | ||
167 | test_pool mem; | ||
168 | mempool_make(&mem); | ||
169 | |||
170 | // Allocate chunks, contents not important. | ||
171 | for (int i = 0; i < NUM_BLOCKS; ++i) { | ||
172 | int* chunk = mempool_alloc(&mem); | ||
173 | TEST_TRUE(chunk != 0); | ||
174 | } | ||
175 | |||
176 | mempool_clear(&mem); | ||
177 | |||
178 | // Allocate chunks and assign values 0..N. | ||
179 | for (int i = 0; i < NUM_BLOCKS; ++i) { | ||
180 | int* chunk = mempool_alloc(&mem); | ||
181 | TEST_TRUE(chunk != 0); | ||
182 | *chunk = i + 1; | ||
183 | } | ||
184 | |||
185 | TEST_EQUAL(sum(&mem), NUM_BLOCKS * (NUM_BLOCKS + 1) / 2); | ||
186 | } | ||
187 | |||
157 | int main() { return 0; } | 188 | int main() { return 0; } |