| 1458 void *begin = scrambled; |
1458 void *begin = scrambled; |
| 1459 void *end = cx_linked_list_last(begin, loc_next); |
1459 void *end = cx_linked_list_last(begin, loc_next); |
| 1460 |
1460 |
| 1461 CX_TEST_DO { |
1461 CX_TEST_DO { |
| 1462 cx_linked_list_sort(&begin, &end, loc_prev, loc_next, loc_data, cx_cmp_int); |
1462 cx_linked_list_sort(&begin, &end, loc_prev, loc_next, loc_data, cx_cmp_int); |
| |
1463 node *check = begin; |
| |
1464 node *check_last = NULL; |
| |
1465 for (size_t i = 0; i < len; i++) { |
| |
1466 CX_TEST_ASSERT(check->data == sorted[i]); |
| |
1467 CX_TEST_ASSERT(check->prev == check_last); |
| |
1468 if (i < len - 1) { |
| |
1469 CX_TEST_ASSERT(check->next != NULL); |
| |
1470 } |
| |
1471 check_last = check; |
| |
1472 check = check->next; |
| |
1473 } |
| |
1474 CX_TEST_ASSERT(check == NULL); |
| |
1475 CX_TEST_ASSERT(end == check_last); |
| |
1476 } |
| |
1477 destroy_nodes_test_data(begin); |
| |
1478 free(sorted); |
| |
1479 free(testdata); |
| |
1480 } |
| |
1481 |
| |
1482 CX_TEST(test_linked_list_sort_c) { |
| |
1483 const size_t len = 3430; |
| |
1484 int *testdata = int_test_data(len); |
| |
1485 void *scrambled = create_nodes_test_data(len); |
| |
1486 node *n = scrambled; |
| |
1487 for (size_t i = 0; i < len; i++) { |
| |
1488 n->data = testdata[i]; |
| |
1489 n = n->next; |
| |
1490 } |
| |
1491 int *sorted = malloc(len*sizeof(int)); |
| |
1492 memcpy(sorted, testdata, len*sizeof(int)); |
| |
1493 qsort(sorted, len, sizeof(int), cx_cmp_int); |
| |
1494 |
| |
1495 void *begin = scrambled; |
| |
1496 void *end = cx_linked_list_last(begin, loc_next); |
| |
1497 |
| |
1498 CX_TEST_DO { |
| |
1499 int z = 1337; |
| |
1500 cx_linked_list_sort_c(&begin, &end, loc_prev, loc_next, loc_data, test_ccmp_int, &z); |
| 1463 node *check = begin; |
1501 node *check = begin; |
| 1464 node *check_last = NULL; |
1502 node *check_last = NULL; |
| 1465 for (size_t i = 0; i < len; i++) { |
1503 for (size_t i = 0; i < len; i++) { |
| 1466 CX_TEST_ASSERT(check->data == sorted[i]); |
1504 CX_TEST_ASSERT(check->data == sorted[i]); |
| 1467 CX_TEST_ASSERT(check->prev == check_last); |
1505 CX_TEST_ASSERT(check->prev == check_last); |
| 3755 cx_test_register(suite, test_list_parlm_compare_unoptimized); |
3793 cx_test_register(suite, test_list_parlm_compare_unoptimized); |
| 3756 |
3794 |
| 3757 return suite; |
3795 return suite; |
| 3758 } |
3796 } |
| 3759 |
3797 |
| 3760 CxTestSuite *cx_test_suite_linked_list(void) { |
3798 CxTestSuite *cx_test_suite_linked_list_low_level() { |
| 3761 CxTestSuite *suite = cx_test_suite_new("linked_list"); |
3799 CxTestSuite *suite = cx_test_suite_new("linked_list (low-level)"); |
| 3762 |
3800 |
| 3763 cx_test_register(suite, test_linked_list_link_unlink); |
3801 cx_test_register(suite, test_linked_list_link_unlink); |
| 3764 cx_test_register(suite, test_linked_list_at); |
3802 cx_test_register(suite, test_linked_list_at); |
| 3765 cx_test_register(suite, test_linked_list_find); |
3803 cx_test_register(suite, test_linked_list_find); |
| 3766 cx_test_register(suite, test_linked_list_compare); |
3804 cx_test_register(suite, test_linked_list_compare); |
| 3776 cx_test_register(suite, test_linked_list_remove); |
3814 cx_test_register(suite, test_linked_list_remove); |
| 3777 cx_test_register(suite, test_linked_list_remove_chain); |
3815 cx_test_register(suite, test_linked_list_remove_chain); |
| 3778 cx_test_register(suite, test_linked_list_size); |
3816 cx_test_register(suite, test_linked_list_size); |
| 3779 cx_test_register(suite, test_linked_list_sort_empty); |
3817 cx_test_register(suite, test_linked_list_sort_empty); |
| 3780 cx_test_register(suite, test_linked_list_sort); |
3818 cx_test_register(suite, test_linked_list_sort); |
| |
3819 cx_test_register(suite, test_linked_list_sort_c); |
| 3781 cx_test_register(suite, test_linked_list_reverse); |
3820 cx_test_register(suite, test_linked_list_reverse); |
| |
3821 |
| |
3822 return suite; |
| |
3823 } |
| |
3824 |
| |
3825 CxTestSuite *cx_test_suite_linked_list(void) { |
| |
3826 CxTestSuite *suite = cx_test_suite_new("linked_list"); |
| 3782 |
3827 |
| 3783 cx_test_register(suite, test_list_ll_create); |
3828 cx_test_register(suite, test_list_ll_create); |
| 3784 cx_test_register(suite, test_list_pll_destroy_no_destr); |
3829 cx_test_register(suite, test_list_pll_destroy_no_destr); |
| 3785 cx_test_register(suite, test_list_pll_destroy_simple_destr); |
3830 cx_test_register(suite, test_list_pll_destroy_simple_destr); |
| 3786 cx_test_register(suite, test_list_pll_destroy_adv_destr); |
3831 cx_test_register(suite, test_list_pll_destroy_adv_destr); |