tests/test_tree.c

changeset 915
23db9f0c1acd
parent 913
72db8e42b95e
child 916
526ed389c3d2
equal deleted inserted replaced
914:7da30512efc4 915:23db9f0c1acd
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);

mercurial