tests/test_list.c

changeset 1316
c41538edfcef
parent 1315
b4c3e0b4c3d5
--- a/tests/test_list.c	Sun May 04 12:15:03 2025 +0200
+++ b/tests/test_list.c	Sun May 04 17:22:30 2025 +0200
@@ -1370,6 +1370,63 @@
     CX_TEST_ASSERT(*(int *) cxListAt(list, 3) == 42);
 })
 
+roll_out_test_combos(emplace, {
+    if (isptrlist) {
+        int **x;
+        int y = 5;
+        int z = 7;
+        int w = 13;
+
+        x = cxListEmplace(list);
+        CX_TEST_ASSERT(x != NULL);
+        CX_TEST_ASSERT(cxListSize(list) == 1);
+        *x = &y;
+        CX_TEST_ASSERT(*(int*)cxListAt(list, 0) == 5);
+
+        x = cxListEmplace(list);
+        CX_TEST_ASSERT(x != NULL);
+        CX_TEST_ASSERT(cxListSize(list) == 2);
+        *x = &z;
+        CX_TEST_ASSERT(*(int*)cxListAt(list, 1) == 7);
+
+        CX_TEST_ASSERT(NULL == cxListEmplaceAt(list, 3));
+        CX_TEST_ASSERT(cxListSize(list) == 2);
+
+        x = cxListEmplaceAt(list, 1);
+        CX_TEST_ASSERT(x != NULL);
+        CX_TEST_ASSERT(cxListSize(list) == 3);
+        *x = &w;
+        CX_TEST_ASSERT(*(int*)cxListAt(list, 0) == 5);
+        CX_TEST_ASSERT(*(int*)cxListAt(list, 1) == 13);
+        CX_TEST_ASSERT(*(int*)cxListAt(list, 2) == 7);
+    } else {
+        int *x;
+
+        x = cxListEmplace(list);
+        CX_TEST_ASSERT(x != NULL);
+        CX_TEST_ASSERT(cxListSize(list) == 1);
+        *x = 5;
+        CX_TEST_ASSERT(*(int*)cxListAt(list, 0) == 5);
+
+        x = cxListEmplace(list);
+        CX_TEST_ASSERT(x != NULL);
+        CX_TEST_ASSERT(cxListSize(list) == 2);
+        *x = 7;
+        CX_TEST_ASSERT(*(int*)cxListAt(list, 1) == 7);
+
+        CX_TEST_ASSERT(NULL == cxListEmplaceAt(list, 3));
+        CX_TEST_ASSERT(cxListSize(list) == 2);
+
+        x = cxListEmplaceAt(list, 1);
+        CX_TEST_ASSERT(x != NULL);
+        CX_TEST_ASSERT(cxListSize(list) == 3);
+        *x = 13;
+        CX_TEST_ASSERT(*(int*)cxListAt(list, 0) == 5);
+        CX_TEST_ASSERT(*(int*)cxListAt(list, 1) == 13);
+        CX_TEST_ASSERT(*(int*)cxListAt(list, 2) == 7);
+    }
+})
+
 roll_out_test_combos_with_defaulted_funcs(insert_array, {
     int a[5] = array_init(5, 47, 11, 13, 42);
     int b[5] = array_init(9, 18, 72, 50, 7);
@@ -1988,7 +2045,7 @@
 static CX_TEST_SUBROUTINE(test_list_verify_destructor, CxList *list,
                           const int *testdata, size_t testdata_len) {
     destr_test_ctr = 0;
-    
+
     int off = list->collection.store_pointer ? 1 : 0;
 
     cxListRemove(list, 15);
@@ -2064,6 +2121,8 @@
     cx_test_register(suite, test_list_parl_add);
     cx_test_register(suite, test_list_arl_insert);
     cx_test_register(suite, test_list_parl_insert);
+    cx_test_register(suite, test_list_arl_emplace);
+    cx_test_register(suite, test_list_parl_emplace);
     cx_test_register(suite, test_list_arl_insert_array);
     cx_test_register(suite, test_list_parl_insert_array);
     cx_test_register(suite, test_list_arl_insert_sorted);
@@ -2169,6 +2228,8 @@
     cx_test_register(suite, test_list_pll_add);
     cx_test_register(suite, test_list_ll_insert);
     cx_test_register(suite, test_list_pll_insert);
+    cx_test_register(suite, test_list_ll_emplace);
+    cx_test_register(suite, test_list_pll_emplace);
     cx_test_register(suite, test_list_ll_insert_array);
     cx_test_register(suite, test_list_pll_insert_array);
     cx_test_register(suite, test_list_ll_insert_sorted);

mercurial