summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meson.build2
-rw-r--r--tests/memory.c50
2 files changed, 52 insertions, 0 deletions
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 <lisiblestd/log.h>
+#include <lisiblestd/memory.h>
+
+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))
Go back to lisible.xyz