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}