diff options
| author | nodist <kevin.comas.git@gmail.com> | 2026-10-12 13:44:57 -0400 |
|---|---|---|
| committer | nodist <kevin.comas.git@gmail.com> | 2026-10-12 13:44:57 -0400 |
| commit | 6673bb9357b9ed8187f3dcb2917e2c6a9da25ee7 (patch) | |
| tree | d498ac4ff5aafc4468d2a88725dab4488268524f /test | |
| parent | 332c114cf633f70027c28ec6bedb898d9de85e51 (diff) | |
multiple slab test
Diffstat (limited to 'test')
| -rw-r--r-- | test/memory.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/test/memory.c b/test/memory.c index 05db8a2..9308b2b 100644 --- a/test/memory.c +++ b/test/memory.c @@ -1,7 +1,7 @@ #include "kpl_test.h" -KPL_TEST(allocate) { +KPL_TEST(allocate_and_pool) { kpl_memory_allocator allocator = {}; kpl_memory_allocator_init(&allocator); for (int32_t times = 0; times < 700; times++) { @@ -17,3 +17,17 @@ KPL_TEST(allocate) { KPL_ASSERT(slab_group32->slab_head == slab_group32->slab_tail, "Only one slab should have been allocated"); kpl_memory_allocator_free(&allocator); } + +KPL_TEST(allocate_multiple_slabs) { + kpl_memory_allocator allocator = {}; + kpl_memory_allocator_init(&allocator); + kpl_object *large1 = kpl_memory_allocator_allocate(&allocator, 1 << 13, KPL_THREAD_MAIN_ID); + kpl_object *large2 = kpl_memory_allocator_allocate(&allocator, 1 << 13, KPL_THREAD_MAIN_ID); + KPL_ASSERT(large1->object_size == 1 << 13, "Invalid object size"); + KPL_ASSERT(large1->object_size == large2->object_size, "Objects should have the same size"); + kpl_memory_allocator_slab_group *slab_group = &allocator.slabs[13]; + KPL_ASSERT(slab_group->slab_head != slab_group->slab_tail, "More the one slab should have been allocated"); + kpl_memory_allocator_return(&allocator, large1); + kpl_memory_allocator_return(&allocator, large2); + kpl_memory_allocator_free(&allocator); +} |
