From d73919a0c717d4f4b6b7c50789f20432ec936361 Mon Sep 17 00:00:00 2001 From: Clement Sibille Date: Mon, 20 May 2024 01:02:14 +0900 Subject: Add missing tests for memory module --- meson.build | 2 ++ tests/memory.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 tests/memory.c diff --git a/meson.build b/meson.build index b640bf1..1918463 100644 --- a/meson.build +++ b/meson.build @@ -14,3 +14,5 @@ test_string = executable('test_string', 'tests/test_runner.c', 'tests/string.c', test('test_string', test_string) test_bytes = executable('test_bytes', 'tests/test_runner.c', 'tests/bytes.c', dependencies: [lisiblestd_dep]) test('test_bytes', test_bytes) +test_memory = executable('test_memory', 'tests/test_runner.c', 'tests/memory.c', dependencies: [lisiblestd_dep]) +test('test_memory', test_memory) diff --git a/tests/memory.c b/tests/memory.c new file mode 100644 index 0000000..b0b2d79 --- /dev/null +++ b/tests/memory.c @@ -0,0 +1,50 @@ +#include "test.h" +#include +#include + +void t_arena_create(void) { + Arena arena; + Arena_init(&arena, &system_allocator, 1024); + T_ASSERT_EQ(arena.capacity, 1024); + T_ASSERT_EQ(arena.size, 0); + T_ASSERT_NOT_NULL(arena.data); + Arena_deinit(&arena, &system_allocator); +} + +void t_arena_allocate(void) { + Arena arena; + Arena_init(&arena, &system_allocator, 10); + void *ptr = Arena_allocate(&arena, 10); + T_ASSERT_NOT_NULL(ptr); + T_ASSERT_EQ(arena.size, 10); + T_ASSERT_EQ(arena.capacity, 10); + Arena_deinit(&arena, &system_allocator); +} + +void t_arena_allocate_array(void) { + Arena arena; + Arena_init(&arena, &system_allocator, 100); + void *ptr = Arena_allocate_array(&arena, 10, sizeof(int)); + T_ASSERT_NOT_NULL(ptr); + T_ASSERT_EQ(arena.size, 10 * sizeof(int)); + T_ASSERT_EQ(arena.capacity, 100); + Arena_deinit(&arena, &system_allocator); +} + +void t_arena_allocate_clear(void) { + Arena arena; + Arena_init(&arena, &system_allocator, 100); + Arena_allocate(&arena, 8); + T_ASSERT_EQ(arena.size, 8); + T_ASSERT_EQ(arena.capacity, 100); + Arena_allocate(&arena, 4); + T_ASSERT_EQ(arena.size, 12); + T_ASSERT_EQ(arena.capacity, 100); + Arena_clear(&arena); + T_ASSERT_EQ(arena.size, 0); + T_ASSERT_EQ(arena.capacity, 100); + Arena_deinit(&arena, &system_allocator); +} + +TEST_SUITE(TEST(t_arena_create), TEST(t_arena_allocate), + TEST(t_arena_allocate_array), TEST(t_arena_allocate_clear)) -- cgit v1.2.3