add missing test coverage for cx_array_copy()

Tue, 18 Nov 2025 17:52:12 +0100

author
Mike Becker <universe@uap-core.de>
date
Tue, 18 Nov 2025 17:52:12 +0100
changeset 1495
beee442be85a
parent 1494
f027a95d93f2
child 1496
1a982f6f2407

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);

mercurial