diff options
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); +} |
