aboutsummaryrefslogtreecommitdiff
path: root/test/memory.c
blob: 05db8a25f2e8ab58af67e6002c77a120dae4ddbe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

#include "kpl_test.h"

KPL_TEST(allocate) {
    kpl_memory_allocator allocator = {};
    kpl_memory_allocator_init(&allocator);
    for (int32_t times = 0; times < 700; times++) {
        kpl_object *objects[10] = {};
        for (int32_t object = 0; object < 10; object++) {
            objects[object] = kpl_memory_allocator_allocate(&allocator, 32, KPL_THREAD_MAIN_ID);
            KPL_ASSERT(objects[object]->object_size == 32, "Invalid size for 32 byte object");
        }
        for (int32_t object = 0; object < 10; object++)
            kpl_memory_allocator_return(&allocator, objects[object]);
    }
    kpl_memory_allocator_slab_group *slab_group32 = &allocator.slabs[5];
    KPL_ASSERT(slab_group32->slab_head == slab_group32->slab_tail, "Only one slab should have been allocated");
    kpl_memory_allocator_free(&allocator);
}