#define N_INTS_TEST 4 #define NIARENA_ARENA_SIZE (N_INTS_TEST * sizeof(int)) #define NIARENA_IMPLEMENTATION #include "../niarena.h" #include #include #include void test_arena_new() { NIArena *arena = niarena_new(); assert(arena->offset == 0); assert(arena->capacity == (N_INTS_TEST * sizeof(int))); niarena_delete(arena); } void test_arena_allocations() { NIArena *arena = niarena_new(); int *ns[N_INTS_TEST]; for(int i = 1; i <= N_INTS_TEST + 1; i++) { int *p = (int *)niarena_alloc(arena, sizeof(int)); if(i == N_INTS_TEST + 1) { // Invalid allocation does not invalidate the rest assert(p == NULL); const char *err = niarena_get_error(); assert(strcmp(err, "niarena_alloc: out of memory inside of the arena") == 0); } else { assert(arena->offset == i * sizeof(int)); *p = 1234 + i; ns[i - 1] = p; } } for(int i = 1; i <= N_INTS_TEST; i++) { assert(*ns[i - 1] == 1234 + i); } niarena_delete(arena); } int main() { test_arena_new(); test_arena_allocations(); printf("== TESTS SUCCESSFUL ==\n"); return 0; }