tests/test_list.c

changeset 1640
1bd16b825a24
parent 1637
34c2e1436945
child 1642
ae5f20db094a
equal deleted inserted replaced
1639:5c3e6477aab4 1640:1bd16b825a24
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);

mercurial