diff -r 0ecb13118cac -r 46d8a8305948 tests/test_list.c --- a/tests/test_list.c Sun Dec 14 23:17:48 2025 +0100 +++ b/tests/test_list.c Mon Dec 15 19:00:51 2025 +0100 @@ -46,7 +46,6 @@ arr.data[3] = 7; arr.data[4] = 11; arr.size = 3; - arr.capacity = 5; int elem = 8, elem2 = 47; int result; CX_TEST_DO { @@ -75,26 +74,62 @@ cx_array_free(arr); } -CX_TEST(test_array_copy_overlap) { - CX_ARRAY_DECLARE_SIZED(char, arr, uint8_t); - cx_array_initialize(arr, 16); - strcpy(arr, "Hello, World!"); +CX_TEST(test_array_reserve) { + CX_ARRAY(int, arr); + cx_array_init(arr, 5); + arr.data[0] = 2; + arr.data[1] = 3; + arr.data[2] = 5; + arr.size = 3; CX_TEST_DO { - errno = 0; - int result = cx_array_simple_copy(arr, 7, arr, 14); - CX_TEST_ASSERT(result == 0); - CX_TEST_ASSERT(errno == 0); - CX_TEST_ASSERT(arr_size == 21); - CX_TEST_ASSERT(arr_capacity == 32); - CX_TEST_ASSERT(0 == memcmp(arr, "Hello, Hello, World!\0", 21)); + // extend + CX_TEST_ASSERT(0 == cx_array_reserve(arr, 8)); + CX_TEST_ASSERT(arr.size == 3); + CX_TEST_ASSERT(arr.capacity == 8); + CX_TEST_ASSERT(arr.data[0] == 2); + CX_TEST_ASSERT(arr.data[1] == 3); + CX_TEST_ASSERT(arr.data[2] == 5); + + // shrink + CX_TEST_ASSERT(0 == cx_array_reserve(arr, 2)); + CX_TEST_ASSERT(arr.size == 2); + CX_TEST_ASSERT(arr.capacity == 2); + CX_TEST_ASSERT(arr.data[0] == 2); + CX_TEST_ASSERT(arr.data[1] == 3); } - cxFreeDefault(arr); + cx_array_free(arr); } -CX_TEST(test_array_reserve) { +CX_TEST(test_array_move_to_new) { + CX_ARRAY(int, arr); + int fixed[5] = {2, 4, 6}; + cx_array_init_fixed(arr, fixed, 3); CX_TEST_DO { - // TODO: create new test for the new API + CX_TEST_ASSERT(arr.data == fixed); + CX_TEST_ASSERT(arr.size == 3); + CX_TEST_ASSERT(arr.capacity == 5); + + CX_TEST_ASSERT(0 == cx_array_move_to_new(arr, 8)); + + CX_TEST_ASSERT(arr.data != fixed); + CX_TEST_ASSERT(arr.size == 3); + CX_TEST_ASSERT(arr.capacity == 8); + CX_TEST_ASSERT(arr.data[0] == 2); + CX_TEST_ASSERT(arr.data[1] == 4); + CX_TEST_ASSERT(arr.data[2] == 6); + + for (int x = 8 ; x <= 18 ; x+=2) { + cx_array_add(arr, &x); + } + + CX_TEST_ASSERT(arr.size == 9); + CX_TEST_ASSERT(arr.capacity >= 9); + + for (int x = 1 ; x <= 9 ; x++) { + CX_TEST_ASSERT(arr.data[x-1] == 2*x); + } } + cx_array_free(arr); } CX_TEST(test_array_insert_sorted) { @@ -115,50 +150,50 @@ 70, 71, 71, 72, 75, 75, 75, 77, 78, 80, 90, 90, 120, 130 }; - CX_ARRAY_DECLARE(int, array); - cx_array_initialize(array, 4); + CX_ARRAY(int, array); + cx_array_init(array, 4); CX_TEST_DO { - CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d1, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 1); - CX_TEST_ASSERT(array_capacity == 4); - CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d2, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 2); - CX_TEST_ASSERT(array_capacity == 4); - CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d3, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 3); - CX_TEST_ASSERT(array_capacity == 4); - CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d4, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 4); - CX_TEST_ASSERT(array_capacity == 4); - CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d5, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 5); - CX_TEST_ASSERT(array_capacity >= 5); - CX_TEST_ASSERT(0 == cx_array_simple_insert_sorted(array, d6a, 6, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 11); - CX_TEST_ASSERT(array_capacity >= 11); - CX_TEST_ASSERT(0 == cx_array_simple_insert_sorted(array, d7a, 6, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 17); - CX_TEST_ASSERT(array_capacity >= 17); - CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d8, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 18); - CX_TEST_ASSERT(array_capacity >= 18); - CX_TEST_ASSERT(0 == cx_array_simple_add_sorted(array, d9, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 19); - CX_TEST_ASSERT(array_capacity >= 19); - CX_TEST_ASSERT(0 == cx_array_simple_insert_sorted(array, d10a, 3, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 22); - CX_TEST_ASSERT(array_capacity >= 22); - CX_TEST_ASSERT(0 == cx_array_simple_insert_sorted(array, d11a, 6, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 28); - CX_TEST_ASSERT(array_capacity >= 28); - CX_TEST_ASSERT(0 == cx_array_simple_insert_sorted(array, d12a, 3, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 31); - CX_TEST_ASSERT(array_capacity >= 31); - - CX_TEST_ASSERT(0 == memcmp(array, expected, 31 * sizeof(int))); + CX_TEST_ASSERT(0 == cx_array_insert_sorted(array, cx_cmp_int, &d1)); + CX_TEST_ASSERT(array.size == 1); + CX_TEST_ASSERT(array.capacity == 4); + CX_TEST_ASSERT(0 == cx_array_insert_sorted(array, cx_cmp_int, &d2)); + CX_TEST_ASSERT(array.size == 2); + CX_TEST_ASSERT(array.capacity == 4); + CX_TEST_ASSERT(0 == cx_array_insert_sorted(array, cx_cmp_int, &d3)); + CX_TEST_ASSERT(array.size == 3); + CX_TEST_ASSERT(array.capacity == 4); + CX_TEST_ASSERT(0 == cx_array_insert_sorted(array, cx_cmp_int, &d4)); + CX_TEST_ASSERT(array.size == 4); + CX_TEST_ASSERT(array.capacity == 4); + CX_TEST_ASSERT(0 == cx_array_insert_sorted(array, cx_cmp_int, &d5)); + CX_TEST_ASSERT(array.size == 5); + CX_TEST_ASSERT(array.capacity >= 5); + CX_TEST_ASSERT(0 == cx_array_insert_sorted_array(array, cx_cmp_int, d6a, 6)); + CX_TEST_ASSERT(array.size == 11); + CX_TEST_ASSERT(array.capacity >= 11); + CX_TEST_ASSERT(0 == cx_array_insert_sorted_array(array, cx_cmp_int, d7a, 6)); + CX_TEST_ASSERT(array.size == 17); + CX_TEST_ASSERT(array.capacity >= 17); + CX_TEST_ASSERT(0 == cx_array_insert_sorted(array, cx_cmp_int, &d8)); + CX_TEST_ASSERT(array.size == 18); + CX_TEST_ASSERT(array.capacity >= 18); + CX_TEST_ASSERT(0 == cx_array_insert_sorted(array, cx_cmp_int, &d9)); + CX_TEST_ASSERT(array.size == 19); + CX_TEST_ASSERT(array.capacity >= 19); + CX_TEST_ASSERT(0 == cx_array_insert_sorted_array(array, cx_cmp_int, d10a, 3)); + CX_TEST_ASSERT(array.size == 22); + CX_TEST_ASSERT(array.capacity >= 22); + CX_TEST_ASSERT(0 == cx_array_insert_sorted_array(array, cx_cmp_int, d11a, 6)); + CX_TEST_ASSERT(array.size == 28); + CX_TEST_ASSERT(array.capacity >= 28); + CX_TEST_ASSERT(0 == cx_array_insert_sorted_array(array, cx_cmp_int, d12a, 3)); + CX_TEST_ASSERT(array.size == 31); + CX_TEST_ASSERT(array.capacity >= 31); + + CX_TEST_ASSERT(0 == memcmp(array.data, expected, 31 * sizeof(int))); } - cxFreeDefault(array); + cx_array_free(array); } CX_TEST(test_array_insert_unique) { @@ -178,47 +213,47 @@ 65, 67, 70, 75, 77, 78, 80, 90, 95, 100, 110 }; - CX_ARRAY_DECLARE(int, array); - cx_array_initialize(array, 4); + CX_ARRAY(int, array); + cx_array_init(array, 4); CX_TEST_DO { - CX_TEST_ASSERT(0 == cx_array_simple_add_unique(array, d1, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 1); - CX_TEST_ASSERT(array_capacity == 4); - CX_TEST_ASSERT(0 == cx_array_simple_add_unique(array, d2, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 2); - CX_TEST_ASSERT(array_capacity == 4); - CX_TEST_ASSERT(0 == cx_array_simple_add_unique(array, d3, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 3); - CX_TEST_ASSERT(array_capacity == 4); - CX_TEST_ASSERT(0 == cx_array_simple_add_unique(array, d4, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 4); - CX_TEST_ASSERT(array_capacity == 4); - CX_TEST_ASSERT(0 == cx_array_simple_add_unique(array, d5, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 5); - CX_TEST_ASSERT(array_capacity >= 5); - CX_TEST_ASSERT(0 == cx_array_simple_insert_unique(array, d6a, 6, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 11); - CX_TEST_ASSERT(array_capacity >= 11); - CX_TEST_ASSERT(0 == cx_array_simple_insert_unique(array, d7a, 6, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 17); - CX_TEST_ASSERT(array_capacity >= 17); - CX_TEST_ASSERT(0 == cx_array_simple_add_unique(array, d8, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 18); - CX_TEST_ASSERT(array_capacity >= 18); - CX_TEST_ASSERT(0 == cx_array_simple_add_unique(array, d9, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 18); - CX_TEST_ASSERT(array_capacity >= 18); - CX_TEST_ASSERT(0 == cx_array_simple_insert_unique(array, d10a, 3, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 19); - CX_TEST_ASSERT(array_capacity >= 19); - CX_TEST_ASSERT(0 == cx_array_simple_insert_unique(array, d11a, 8, cx_cmp_int)); - CX_TEST_ASSERT(array_size == 22); - CX_TEST_ASSERT(array_capacity >= 22); - - CX_TEST_ASSERT(0 == memcmp(array, expected, 22 * sizeof(int))); + CX_TEST_ASSERT(0 == cx_array_insert_unique(array, cx_cmp_int, &d1)); + CX_TEST_ASSERT(array.size == 1); + CX_TEST_ASSERT(array.capacity == 4); + CX_TEST_ASSERT(0 == cx_array_insert_unique(array, cx_cmp_int, &d2)); + CX_TEST_ASSERT(array.size == 2); + CX_TEST_ASSERT(array.capacity == 4); + CX_TEST_ASSERT(0 == cx_array_insert_unique(array, cx_cmp_int, &d3)); + CX_TEST_ASSERT(array.size == 3); + CX_TEST_ASSERT(array.capacity == 4); + CX_TEST_ASSERT(0 == cx_array_insert_unique(array, cx_cmp_int, &d4)); + CX_TEST_ASSERT(array.size == 4); + CX_TEST_ASSERT(array.capacity == 4); + CX_TEST_ASSERT(0 == cx_array_insert_unique(array, cx_cmp_int, &d5)); + CX_TEST_ASSERT(array.size == 5); + CX_TEST_ASSERT(array.capacity >= 5); + CX_TEST_ASSERT(0 == cx_array_insert_unique_array(array, cx_cmp_int, d6a, 6)); + CX_TEST_ASSERT(array.size == 11); + CX_TEST_ASSERT(array.capacity >= 11); + CX_TEST_ASSERT(0 == cx_array_insert_unique_array(array, cx_cmp_int, d7a, 6)); + CX_TEST_ASSERT(array.size == 17); + CX_TEST_ASSERT(array.capacity >= 17); + CX_TEST_ASSERT(0 == cx_array_insert_unique(array, cx_cmp_int, &d8)); + CX_TEST_ASSERT(array.size == 18); + CX_TEST_ASSERT(array.capacity >= 18); + CX_TEST_ASSERT(0 == cx_array_insert_unique(array, cx_cmp_int, &d9)); + CX_TEST_ASSERT(array.size == 18); + CX_TEST_ASSERT(array.capacity >= 18); + CX_TEST_ASSERT(0 == cx_array_insert_unique_array(array, cx_cmp_int, d10a, 3)); + CX_TEST_ASSERT(array.size == 19); + CX_TEST_ASSERT(array.capacity >= 19); + CX_TEST_ASSERT(0 == cx_array_insert_unique_array(array, cx_cmp_int, d11a, 8)); + CX_TEST_ASSERT(array.size == 22); + CX_TEST_ASSERT(array.capacity >= 22); + + CX_TEST_ASSERT(0 == memcmp(array.data, expected, 22 * sizeof(int))); } - cxFreeDefault(array); + cx_array_free(array); } CX_TEST(test_array_binary_search) { @@ -3243,8 +3278,8 @@ CxTestSuite *suite = cx_test_suite_new("array_list"); cx_test_register(suite, test_array_add); - cx_test_register(suite, test_array_copy_overlap); cx_test_register(suite, test_array_reserve); + cx_test_register(suite, test_array_move_to_new); cx_test_register(suite, test_array_insert_sorted); cx_test_register(suite, test_array_insert_unique); cx_test_register(suite, test_array_binary_search);