blob: b1c8aa8a92f9f1de5c8d79200c718c50e6be7cda (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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;
}
|