tests/test_dynarray.c
1#include "alba.h"
2
3#include "check.h"
4
5START_TEST(test_dynarray_new)
6{
7 DynArray array = dynarray_new(sizeof(float), 0);
8 ck_assert_int_eq(array.element_size, sizeof(float));
9 ck_assert_int_eq(array.capacity, 0);
10 ck_assert_int_eq(array.length, 0);
11}
12
13END_TEST
14
15START_TEST(test_dynarray_extend)
16{
17 DynArray array = dynarray_new(sizeof(float), 0);
18 dynarray_extend(&array, 2, &(float[]){1.0, 2.0});
19
20 ck_assert_int_eq(array.element_size, sizeof(float));
21 ck_assert_int_eq(array.capacity, 16);
22 ck_assert_int_eq(array.length, 2);
23 ck_assert_float_eq(((float*)array.data)[0], 1.0);
24 ck_assert_float_eq(((float*)array.data)[1], 2.0);
25
26 dynarray_extend(&array, 2, &(float[]){3.0, 4.0});
27 ck_assert_int_eq(array.capacity, 16);
28 ck_assert_int_eq(array.length, 4);
29 ck_assert_float_eq(((float*)array.data)[0], 1.0);
30 ck_assert_float_eq(((float*)array.data)[1], 2.0);
31 ck_assert_float_eq(((float*)array.data)[2], 3.0);
32 ck_assert_float_eq(((float*)array.data)[3], 4.0);
33}
34
35END_TEST
36
37
38int main(void)
39{
40 Suite* suite = suite_create("test_dynarray");
41
42 {
43 TCase* test = tcase_create("test_dynarray_new");
44 tcase_add_test(test, test_dynarray_new);
45 suite_add_tcase(suite, test);
46 }
47 {
48 TCase* test = tcase_create("test_dynarray_extend");
49 tcase_add_test(test, test_dynarray_extend);
50 suite_add_tcase(suite, test);
51 }
52
53 SRunner* runner = srunner_create(suite);
54
55 srunner_run_all(runner, CK_NORMAL);
56 const int number_failed = srunner_ntests_failed(runner);
57 srunner_free(runner);
58 return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
59}