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