From e5eb3845eff1ea080ffdc08102f7d1a6dee1179f Mon Sep 17 00:00:00 2001 From: 3gg <3gg@shellblade.net> Date: Tue, 19 Aug 2025 18:22:34 +0200 Subject: Add tests for clearing uninitialized memory allocators --- mempool/src/mempool.c | 11 +++++------ mempool/test/mempool_test.c | 10 ++++++++-- 2 files changed, 13 insertions(+), 8 deletions(-) (limited to 'mempool') diff --git a/mempool/src/mempool.c b/mempool/src/mempool.c index bae4fc9..2c3c725 100644 --- a/mempool/src/mempool.c +++ b/mempool/src/mempool.c @@ -65,15 +65,14 @@ void mempool_del_(mempool* pool) { } } -// TODO: Add a unit test for clearing a pool that has not been initialized. void mempool_clear_(mempool* pool) { assert(pool); - pool->head = 0; - pool->used = 0; - pool->num_used_blocks = 0; - memset(pool->blocks, 0, pool->num_blocks * pool->block_size_bytes); - memset(pool->block_info, 0, pool->num_blocks * sizeof(BlockInfo)); if (pool->num_blocks > 0) { + pool->head = 0; + pool->used = 0; + pool->num_used_blocks = 0; + memset(pool->blocks, 0, pool->num_blocks * pool->block_size_bytes); + memset(pool->block_info, 0, pool->num_blocks * sizeof(BlockInfo)); init_free_list(pool); } } diff --git a/mempool/test/mempool_test.c b/mempool/test/mempool_test.c index 6d904bc..69658b9 100644 --- a/mempool/test/mempool_test.c +++ b/mempool/test/mempool_test.c @@ -25,13 +25,19 @@ TEST_CASE(mempool_create) { } // Create a dynamically-backed pool. -TEST_CASE(mem_create_dyn) { +TEST_CASE(mempool_create_dyn) { DEF_MEMPOOL_DYN(dyn_pool, int); dyn_pool pool; mempool_make_dyn(&pool, NUM_BLOCKS, sizeof(int)); } +// Clear an uninitialized pool. +TEST_CASE(mempool_clear_uninitialized) { + test_pool pool = {0}; + mempool_clear(&pool); +} + // Allocate all N blocks. TEST_CASE(mempool_allocate_until_full) { test_pool pool; @@ -172,7 +178,7 @@ TEST_CASE(mempool_get_block) { } // Clear and re-use an allocator. -TEST_CASE(mem_clear_then_reuse) { +TEST_CASE(mempool_clear_then_reuse) { test_pool mem; mempool_make(&mem); -- cgit v1.2.3