Tue, 18 Nov 2025 17:52:12 +0100
add missing test coverage for cx_array_copy()
| tests/test_list.c | file | annotate | diff | comparison | revisions |
--- a/tests/test_list.c Tue Nov 18 17:36:41 2025 +0100 +++ b/tests/test_list.c Tue Nov 18 17:52:12 2025 +0100 @@ -119,6 +119,40 @@ cxFreeDefault(arr); } +CX_TEST(test_array_add16) { + CX_ARRAY_DECLARE_SIZED(char, arr, uint16_t); + cx_array_initialize(arr, 300); + arr_size = 270; + int result; + CX_TEST_DO { + char elem = 'A'; + result = cx_array_simple_add(arr, elem); + CX_TEST_ASSERT(result == 0); + CX_TEST_ASSERT(arr[270] == 'A'); + CX_TEST_ASSERT(arr_size == 271); + CX_TEST_ASSERT(arr_capacity == 300); + + char *hello = "Hello"; + result = cx_array_simple_copy(arr, 9000, hello, 5); + CX_TEST_ASSERT(result == 0); + CX_TEST_ASSERT(arr[9000] == 'H'); + CX_TEST_ASSERT(arr[9001] == 'e'); + CX_TEST_ASSERT(arr[9002] == 'l'); + CX_TEST_ASSERT(arr[9003] == 'l'); + CX_TEST_ASSERT(arr[9004] == 'o'); + CX_TEST_ASSERT(arr_size == 9005); + CX_TEST_ASSERT(arr_capacity == 9*1024); + + // does not fit into 16-bit sized array + result = cx_array_simple_copy(arr, 65532, hello, 5); + CX_TEST_ASSERT(result != 0); + CX_TEST_ASSERT(errno == EOVERFLOW); + CX_TEST_ASSERT(arr_size == 9005); + CX_TEST_ASSERT(arr_capacity == 9*1024); + } + cxFreeDefault(arr); +} + CX_TEST(test_array_copy_unsupported_width) { CX_ARRAY_DECLARE_SIZED(int, arr, uint16_t); cx_array_initialize(arr, 16); @@ -143,6 +177,22 @@ cxFreeDefault(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_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)); + } + cxFreeDefault(arr); +} + CX_TEST(test_array_reserve) { { // default size @@ -3286,7 +3336,9 @@ cx_test_register(suite, test_array_add); cx_test_register(suite, test_array_add8); + cx_test_register(suite, test_array_add16); cx_test_register(suite, test_array_copy_unsupported_width); + cx_test_register(suite, test_array_copy_overlap); cx_test_register(suite, test_array_reserve); cx_test_register(suite, test_array_reserve_unsupported_width); cx_test_register(suite, test_array_insert_sorted);