Sat, 20 Dec 2025 10:51:45 +0100
move low-level linked list tests to separate suite
| tests/test_list.c | file | annotate | diff | comparison | revisions |
--- a/tests/test_list.c Sat Dec 20 10:43:14 2025 +0100 +++ b/tests/test_list.c Sat Dec 20 10:51:45 2025 +0100 @@ -1479,6 +1479,44 @@ free(testdata); } +CX_TEST(test_linked_list_sort_c) { + const size_t len = 3430; + int *testdata = int_test_data(len); + void *scrambled = create_nodes_test_data(len); + node *n = scrambled; + for (size_t i = 0; i < len; i++) { + n->data = testdata[i]; + n = n->next; + } + int *sorted = malloc(len*sizeof(int)); + memcpy(sorted, testdata, len*sizeof(int)); + qsort(sorted, len, sizeof(int), cx_cmp_int); + + void *begin = scrambled; + void *end = cx_linked_list_last(begin, loc_next); + + CX_TEST_DO { + int z = 1337; + cx_linked_list_sort_c(&begin, &end, loc_prev, loc_next, loc_data, test_ccmp_int, &z); + node *check = begin; + node *check_last = NULL; + for (size_t i = 0; i < len; i++) { + CX_TEST_ASSERT(check->data == sorted[i]); + CX_TEST_ASSERT(check->prev == check_last); + if (i < len - 1) { + CX_TEST_ASSERT(check->next != NULL); + } + check_last = check; + check = check->next; + } + CX_TEST_ASSERT(check == NULL); + CX_TEST_ASSERT(end == check_last); + } + destroy_nodes_test_data(begin); + free(sorted); + free(testdata); +} + CX_TEST(test_linked_list_reverse) { void *testdata = create_nodes_test_data(4); void *expected = create_nodes_test_data(4); @@ -3757,8 +3795,8 @@ return suite; } -CxTestSuite *cx_test_suite_linked_list(void) { - CxTestSuite *suite = cx_test_suite_new("linked_list"); +CxTestSuite *cx_test_suite_linked_list_low_level() { + CxTestSuite *suite = cx_test_suite_new("linked_list (low-level)"); cx_test_register(suite, test_linked_list_link_unlink); cx_test_register(suite, test_linked_list_at); @@ -3778,8 +3816,15 @@ cx_test_register(suite, test_linked_list_size); cx_test_register(suite, test_linked_list_sort_empty); cx_test_register(suite, test_linked_list_sort); + cx_test_register(suite, test_linked_list_sort_c); cx_test_register(suite, test_linked_list_reverse); + return suite; +} + +CxTestSuite *cx_test_suite_linked_list(void) { + CxTestSuite *suite = cx_test_suite_new("linked_list"); + cx_test_register(suite, test_list_ll_create); cx_test_register(suite, test_list_pll_destroy_no_destr); cx_test_register(suite, test_list_pll_destroy_simple_destr);