aboutsummaryrefslogtreecommitdiff
path: root/test/memory.c
diff options
context:
space:
mode:
authornodist <kevin.comas.git@gmail.com>2026-10-12 13:44:57 -0400
committernodist <kevin.comas.git@gmail.com>2026-10-12 13:44:57 -0400
commit6673bb9357b9ed8187f3dcb2917e2c6a9da25ee7 (patch)
treed498ac4ff5aafc4468d2a88725dab4488268524f /test/memory.c
parent332c114cf633f70027c28ec6bedb898d9de85e51 (diff)
multiple slab test
Diffstat (limited to 'test/memory.c')
-rw-r--r--test/memory.c16
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);
+}