diff options
| author | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-04-08 13:06:13 +0200 |
|---|---|---|
| committer | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-04-08 13:06:13 +0200 |
| commit | 630fcb1846aed16b9ab62bcf700f668883f4521f (patch) | |
| tree | e01c41a684ada023c6fa33614951d21a446e206f /tests/test_vec.c | |
| parent | ff3d85cabbc3df422ed68fd5b16217d4dcaba49d (diff) | |
Improve vec tests with memory assertions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'tests/test_vec.c')
| -rw-r--r-- | tests/test_vec.c | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/test_vec.c b/tests/test_vec.c index 68cb0ce..502335b 100644 --- a/tests/test_vec.c +++ b/tests/test_vec.c @@ -1,6 +1,11 @@ #include "../include/testing.h" #include "../include/vec.h" +typedef struct { + i32 x; + i32 y; +} Point; + i32 test_int_vec() { Arena perm = Arena_new(128e3); @@ -23,3 +28,61 @@ i32 test_int_vec() { return 0; } + +i32 test_vec_push() { + Arena perm = Arena_new(128e3); + Vec v = Vec_new(&perm, i32, 4); + + i32 vals[] = {10, 20, 30}; + for (i32 i = 0; i < 3; i++) Vec_push(&perm, &v, &vals[i]); + + t_assert_equal(v.len, 3); + t_assert_equal(*Vec_get(v, i32, 0), 10); + t_assert_equal(*Vec_get(v, i32, 1), 20); + t_assert_equal(*Vec_get(v, i32, 2), 30); + t_assert_equal(Arena_get_used(perm), v.cap * sizeof(i32)); + + return 0; +} + +i32 test_vec_grow() { + Arena perm = Arena_new(128e3); + Vec v = Vec_new(&perm, i32, 2); + + for (i32 i = 0; i < 8; i++) Vec_push(&perm, &v, &i); + + t_assert_equal(v.len, 8); + t_assert_equal(Arena_get_used(perm), sizeof(i32) * (2 + 4 + 8)); + + return 0; +} + +i32 test_vec_struct() { + Arena perm = Arena_new(128e3); + Vec v = Vec_new(&perm, Point, 2); + + Point p1 = {1, 2}, p2 = {3, 4}; + Vec_push(&perm, &v, &p1); + Vec_push(&perm, &v, &p2); + + Point *r0 = Vec_get(v, Point, 0); + Point *r1 = Vec_get(v, Point, 1); + t_assert_equal(r0->x, 1); + t_assert_equal(r0->y, 2); + t_assert_equal(r1->x, 3); + t_assert_equal(r1->y, 4); + t_assert_equal(Arena_get_used(perm), 16); + + return 0; +} + +i32 test_vec_initial_len() { + Arena perm = Arena_new(128e3); + Vec v = Vec_new(&perm, i32, 4); + + t_assert_equal(v.len, 0); + t_assert_equal(v.cap, 4); + t_assert_equal(Arena_get_used(perm), 16); + + return 0; +} |
