summaryrefslogtreecommitdiff
path: root/src/tests/arena_tests.c
diff options
context:
space:
mode:
authorphysick <mynameisgennadiy@vk.com>2026-08-12 18:33:52 +0500
committerphysick <mynameisgennadiy@vk.com>2026-08-29 14:17:03 +0500
commitd16a1385efe911b1683e390f672cadee78b842be (patch)
tree9c4a5e8a01952befa6b48c8fee4bd7471dbf421f /src/tests/arena_tests.c
parentb1b2586afa06105291355a19f581016c347463bc (diff)
test system
Diffstat (limited to 'src/tests/arena_tests.c')
-rw-r--r--src/tests/arena_tests.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/tests/arena_tests.c b/src/tests/arena_tests.c
new file mode 100644
index 0000000..b1c8aa8
--- /dev/null
+++ b/src/tests/arena_tests.c
@@ -0,0 +1,39 @@
+#include "test.h"
+#include "../utils/arena.h"
+#include <stdlib.h>
+#include <string.h>
+
+char *ArenaAllocation() {
+ Arena arena = {0};
+ ArenaInit(&arena, 1024);
+
+ // Init
+ size_t elements = 10;
+ int *arr = ArenaAlloc(&arena, sizeof(int) * elements);
+ if (arr == NULL) return "The int array allocation failed";
+ for (int i = 0; i < elements; ++i) {
+ arr[i] = i;
+ }
+ char *duped = ArenaStrdup(&arena, "Test string");
+ if (arr == NULL) return "The string array allocation failed";
+
+ // Access
+ for (int i = 0; i < elements; ++i) {
+ if (arr[i] != i) return "Arena memory corruption in the int array";
+ }
+ if (strcmp(duped, "Test string") != 0) {
+ return "Arena memory corruption in the string duping";
+ }
+
+ free(arena.mem);
+ return NULL;
+}
+
+char *ArenaOutOfMemory() {
+ Arena arena = {0};
+ ArenaInit(&arena, sizeof(int) * 2);
+ int *arr = ArenaAlloc(&arena, sizeof(int) * 3);
+ free(arena.mem);
+ if (arr != NULL) return "The int array allocation did not fail";
+ return NULL;
+}