From dd738a64624799d47cdb3d465930675c9b7145ab Mon Sep 17 00:00:00 2001 From: Georg Reinke Date: Tue, 28 Mar 2017 12:06:10 +0200 Subject: [PATCH] add simple tests for memory allocator --- tests/memory.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/memory.c b/tests/memory.c index 8e8637051..e266ca8c2 100644 --- a/tests/memory.c +++ b/tests/memory.c @@ -34,3 +34,33 @@ Theory((size_t len, size_t align, struct memtype *m), memory, aligned) { ret = memory_free(m, ptr, len); cr_assert_eq(ret, 0, "Failed to release memory: ret=%d, ptr=%p, len=%zu: %s", ret, ptr, len, strerror(errno)); } + +Test(memory, manager) { + void *p = memory_alloc(&memtype_heap, 1<<10); + struct memtype *manager = memtype_managed_init(p, 1<<10); + + void *p1, *p2, *p3; + p1 = memory_alloc(manager, 16); + cr_assert(p1); + + p2 = memory_alloc(manager, 32); + cr_assert(p2); + + cr_assert(memory_free(manager, p1, 16) == 0); + + p1 = memory_alloc_aligned(manager, 128, 128); + cr_assert(p1); + cr_assert(IS_ALIGNED(p1, 128)); + + p3 = memory_alloc_aligned(manager, 128, 256); + cr_assert(p3); + cr_assert(IS_ALIGNED(p1, 256)); + + cr_assert(memory_free(manager, p2, 32) == 0); + cr_assert(memory_free(manager, p1, 128) == 0); + cr_assert(memory_free(manager, p3, 128) == 0); + + p1 = memory_alloc(manager, (1<<10)-sizeof(struct memblock)); + cr_assert(p1); + cr_assert(memory_free(manager, p1, (1<<10)-sizeof(struct memblock)) == 0); +}