tests/test_list.c

changeset 1485
814c1c61488d
parent 1483
97a6cf1520ba
child 1486
717e472f18d9
--- a/tests/test_list.c	Tue Nov 11 17:02:26 2025 +0100
+++ b/tests/test_list.c	Tue Nov 11 18:15:17 2025 +0100
@@ -2526,6 +2526,30 @@
     free(testdata);
 })
 
+roll_out_test_combos(reserve_and_shrink, {
+    // there is no actual observable behavior,
+    // so we just check that the functions return zero
+    int *td1 = int_test_data_added_to_list(list, isptrlist, 500);
+    CX_TEST_ASSERT(0 == cxListReserve(list, 200));
+    CX_TEST_ASSERT(0 == cxListReserve(list, 1000));
+    int *td2 = int_test_data_added_to_list(list, isptrlist, 500);
+    int *td3 = int_test_data_added_to_list(list, isptrlist, 500);
+    CX_TEST_ASSERT(0 == cxListShrink(list));
+    size_t i = 0;
+    for (size_t j = 0 ; j < 500 ; j++, i++) {
+        CX_TEST_ASSERT(*(int*)cxListAt(list, i) == td1[j]);
+    }
+    for (size_t j = 0 ; j < 500 ; j++, i++) {
+        CX_TEST_ASSERT(*(int*)cxListAt(list, i) == td2[j]);
+    }
+    for (size_t j = 0 ; j < 500 ; j++, i++) {
+        CX_TEST_ASSERT(*(int*)cxListAt(list, i) == td3[j]);
+    }
+    free(td1);
+    free(td2);
+    free(td3);
+})
+
 static bool test_clone_func_max_enabled = false;
 static unsigned test_clone_func_max_clones;
 static void *test_clone_func(void *dest, const void *src, const CxAllocator *al, void *data) {
@@ -3226,6 +3250,8 @@
     cx_test_register(suite, test_list_parl_simple_destr);
     cx_test_register(suite, test_list_arl_advanced_destr);
     cx_test_register(suite, test_list_parl_advanced_destr);
+    cx_test_register(suite, test_list_arl_reserve_and_shrink);
+    cx_test_register(suite, test_list_parl_reserve_and_shrink);
     cx_test_register(suite, test_list_arl_clone_into_arl);
     cx_test_register(suite, test_list_parl_clone_into_arl);
     cx_test_register(suite, test_list_arl_clone_into_ll);
@@ -3361,6 +3387,8 @@
     cx_test_register(suite, test_list_pll_simple_destr);
     cx_test_register(suite, test_list_ll_advanced_destr);
     cx_test_register(suite, test_list_pll_advanced_destr);
+    cx_test_register(suite, test_list_ll_reserve_and_shrink);
+    cx_test_register(suite, test_list_pll_reserve_and_shrink);
     cx_test_register(suite, test_list_ll_clone_into_arl);
     cx_test_register(suite, test_list_pll_clone_into_arl);
     cx_test_register(suite, test_list_ll_clone_into_ll);
@@ -3469,6 +3497,8 @@
     cx_test_register(suite, test_list_pkvl_simple_destr);
     cx_test_register(suite, test_list_kvl_advanced_destr);
     cx_test_register(suite, test_list_pkvl_advanced_destr);
+    cx_test_register(suite, test_list_kvl_reserve_and_shrink);
+    cx_test_register(suite, test_list_pkvl_reserve_and_shrink);
     // note: kv-lists also support a list clone, but that does not clone the keys
     cx_test_register(suite, test_list_kvl_clone_into_arl);
     cx_test_register(suite, test_list_pkvl_clone_into_arl);

mercurial