diff -r 949908c97474 -r 2be8fe3d5a2d tests/test_list.c --- a/tests/test_list.c Wed Jan 24 22:19:05 2024 +0100 +++ b/tests/test_list.c Thu Jan 25 22:01:12 2024 +0100 @@ -36,6 +36,68 @@ #include +CX_TEST(test_array_add) { + int stackspace[5] = {1,1,2,3,5}; + int *stackarray = stackspace; + size_t stackarray_size = 3; + size_t stackarray_capacity = 5; + int *heaparray = calloc(5, sizeof(int)); + heaparray[0] = 2; + heaparray[1] = 3; + heaparray[2] = 5; + heaparray[3] = 7; + heaparray[4] = 11; + size_t heaparray_size = 3; + size_t heaparray_capacity = 5; + int elem = 8, elem2 = 47; + enum cx_array_copy_result result; + CX_TEST_DO { + result = cx_array_add(&stackarray, &stackarray_size, &stackarray_capacity, sizeof(int), &elem, NULL); + CX_TEST_ASSERT(result == CX_ARRAY_COPY_SUCCESS); + CX_TEST_ASSERT(stackarray[0] == 1); + CX_TEST_ASSERT(stackarray[1] == 1); + CX_TEST_ASSERT(stackarray[2] == 2); + CX_TEST_ASSERT(stackarray[3] == 8); + CX_TEST_ASSERT(stackarray[4] == 5); + CX_TEST_ASSERT(stackarray_size == 4); + CX_TEST_ASSERT(stackarray_capacity == 5); + + stackarray_size = 5; + result = cx_array_add(&stackarray, &stackarray_size, &stackarray_capacity, sizeof(int), &elem2, NULL); + CX_TEST_ASSERT(result == CX_ARRAY_COPY_REALLOC_NOT_SUPPORTED); + CX_TEST_ASSERT(stackarray[0] == 1); + CX_TEST_ASSERT(stackarray[1] == 1); + CX_TEST_ASSERT(stackarray[2] == 2); + CX_TEST_ASSERT(stackarray[3] == 8); + CX_TEST_ASSERT(stackarray[4] == 5); + CX_TEST_ASSERT(stackarray_size == 5); + CX_TEST_ASSERT(stackarray_capacity == 5); + + result = cx_array_add(&heaparray, &heaparray_size, &heaparray_capacity, sizeof(int), &elem, cx_array_default_reallocator); + CX_TEST_ASSERT(result == CX_ARRAY_COPY_SUCCESS); + CX_TEST_ASSERT(heaparray[0] == 2); + CX_TEST_ASSERT(heaparray[1] == 3); + CX_TEST_ASSERT(heaparray[2] == 5); + CX_TEST_ASSERT(heaparray[3] == 8); + CX_TEST_ASSERT(heaparray[4] == 11); + CX_TEST_ASSERT(heaparray_size == 4); + CX_TEST_ASSERT(heaparray_capacity == 5); + + heaparray_size = 5; + result = cx_array_add(&heaparray, &heaparray_size, &heaparray_capacity, sizeof(int), &elem2, cx_array_default_reallocator); + CX_TEST_ASSERT(result == CX_ARRAY_COPY_SUCCESS); + CX_TEST_ASSERT(heaparray[0] == 2); + CX_TEST_ASSERT(heaparray[1] == 3); + CX_TEST_ASSERT(heaparray[2] == 5); + CX_TEST_ASSERT(heaparray[3] == 8); + CX_TEST_ASSERT(heaparray[4] == 11); + CX_TEST_ASSERT(heaparray[5] == 47); + CX_TEST_ASSERT(heaparray_size == 6); + CX_TEST_ASSERT(heaparray_capacity >= 6); + } + free(heaparray); +} + typedef struct node { struct node *next; struct node *prev; @@ -1344,6 +1406,8 @@ CxTestSuite *cx_test_suite_array_list(void) { CxTestSuite *suite = cx_test_suite_new("array_list"); + cx_test_register(suite, test_array_add); + cx_test_register(suite, test_list_arl_create); cx_test_register(suite, test_list_arl_create_simple); cx_test_register(suite, test_list_arl_create_simple_for_pointers);