483 CX_TEST_ASSERT(iter.depth == 1); |
483 CX_TEST_ASSERT(iter.depth == 1); |
484 CX_TEST_ASSERT(iter.loc_next == offsetof(tree_node, next)); |
484 CX_TEST_ASSERT(iter.loc_next == offsetof(tree_node, next)); |
485 CX_TEST_ASSERT(iter.loc_children == offsetof(tree_node, children)); |
485 CX_TEST_ASSERT(iter.loc_children == offsetof(tree_node, children)); |
486 cxTreeIteratorDispose(&iter); |
486 cxTreeIteratorDispose(&iter); |
487 CX_TEST_ASSERT(iter.stack == NULL); |
487 CX_TEST_ASSERT(iter.stack == NULL); |
|
488 } |
|
489 } |
|
490 |
|
491 CX_TEST(test_tree_iterator_create_for_empty_tree) { |
|
492 CX_TEST_DO { |
|
493 CxTreeIterator iter = cx_tree_iterator(NULL, false, tree_children(tree_node)); |
|
494 CX_TEST_ASSERT(!iter.visit_on_exit); |
|
495 CX_TEST_ASSERT(!iter.exiting); |
|
496 CX_TEST_ASSERT(iter.counter == 0); |
|
497 CX_TEST_ASSERT(iter.node == NULL); |
|
498 CX_TEST_ASSERT(!iter.base.mutating); |
|
499 CX_TEST_ASSERT(!iter.base.remove); |
|
500 CX_TEST_ASSERT(iter.stack == NULL); |
|
501 CX_TEST_ASSERT(iter.stack_capacity == 0); |
|
502 CX_TEST_ASSERT(iter.stack_size == 0); |
|
503 CX_TEST_ASSERT(iter.depth == 0); |
|
504 CX_TEST_ASSERT(iter.loc_next == offsetof(tree_node, next)); |
|
505 CX_TEST_ASSERT(iter.loc_children == offsetof(tree_node, children)); |
|
506 CX_TEST_ASSERT(!cxIteratorValid(iter)); |
|
507 // disposing this iterator should also be harmless |
|
508 cxTreeIteratorDispose(&iter); |
488 } |
509 } |
489 } |
510 } |
490 |
511 |
491 CX_TEST(test_tree_iterator_basic_only_enter) { |
512 CX_TEST(test_tree_iterator_basic_only_enter) { |
492 tree_node root = {0}; |
513 tree_node root = {0}; |
1892 CX_TEST_ASSERT(relinked_share->parent == tree->root); |
1913 CX_TEST_ASSERT(relinked_share->parent == tree->root); |
1893 CX_TEST_ASSERT(relinked_lib != NULL); |
1914 CX_TEST_ASSERT(relinked_lib != NULL); |
1894 CX_TEST_ASSERT(relinked_lib->parent == tree->root); |
1915 CX_TEST_ASSERT(relinked_lib->parent == tree->root); |
1895 CX_TEST_ASSERT(NULL != cxTreeFind(tree, "/home/")); |
1916 CX_TEST_ASSERT(NULL != cxTreeFind(tree, "/home/")); |
1896 |
1917 |
1897 |
|
1898 cxTreeDestroy(tree); |
1918 cxTreeDestroy(tree); |
1899 // all memory should be free when using destroy instead of remove |
1919 // all memory should be free when using destroy instead of remove |
1900 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
1920 CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
1901 } |
1921 } |
1902 cx_testing_allocator_destroy(&talloc); |
1922 cx_testing_allocator_destroy(&talloc); |
1973 cx_test_register(suite, test_tree2_link_add_child); |
1993 cx_test_register(suite, test_tree2_link_add_child); |
1974 cx_test_register(suite, test_tree2_link_move_to_other_parent); |
1994 cx_test_register(suite, test_tree2_link_move_to_other_parent); |
1975 cx_test_register(suite, test_tree2_unlink); |
1995 cx_test_register(suite, test_tree2_unlink); |
1976 cx_test_register(suite, test_tree_search); |
1996 cx_test_register(suite, test_tree_search); |
1977 cx_test_register(suite, test_tree_iterator_create_and_dispose); |
1997 cx_test_register(suite, test_tree_iterator_create_and_dispose); |
|
1998 cx_test_register(suite, test_tree_iterator_create_for_empty_tree); |
1978 cx_test_register(suite, test_tree_iterator_basic_only_enter); |
1999 cx_test_register(suite, test_tree_iterator_basic_only_enter); |
1979 cx_test_register(suite, test_tree_iterator_basic_enter_and_exit); |
2000 cx_test_register(suite, test_tree_iterator_basic_enter_and_exit); |
1980 cx_test_register(suite, test_tree_iterator_xml); |
2001 cx_test_register(suite, test_tree_iterator_xml); |
1981 cx_test_register(suite, test_tree_iterator_free_nodes); |
2002 cx_test_register(suite, test_tree_iterator_free_nodes); |
1982 cx_test_register(suite, test_tree_visitor); |
2003 cx_test_register(suite, test_tree_visitor); |