655 CxTreeIterator iter = cx_tree_iterator(&root, false, tree_children(tree_node)); |
655 CxTreeIterator iter = cx_tree_iterator(&root, false, tree_children(tree_node)); |
656 CX_TEST_ASSERT(!iter.visit_on_exit); |
656 CX_TEST_ASSERT(!iter.visit_on_exit); |
657 CX_TEST_ASSERT(!iter.exiting); |
657 CX_TEST_ASSERT(!iter.exiting); |
658 CX_TEST_ASSERT(iter.counter == 1); |
658 CX_TEST_ASSERT(iter.counter == 1); |
659 CX_TEST_ASSERT(iter.node == &root); |
659 CX_TEST_ASSERT(iter.node == &root); |
660 CX_TEST_ASSERT(!iter.base.mutating); |
660 CX_TEST_ASSERT(!iter.base.allow_remove); |
661 CX_TEST_ASSERT(!iter.base.remove); |
661 CX_TEST_ASSERT(!iter.base.remove); |
662 CX_TEST_ASSERT(iter.stack != NULL); |
662 CX_TEST_ASSERT(iter.stack != NULL); |
663 CX_TEST_ASSERT(iter.stack_capacity > 0); |
663 CX_TEST_ASSERT(iter.stack_capacity > 0); |
664 CX_TEST_ASSERT(iter.stack_size == 1); |
664 CX_TEST_ASSERT(iter.stack_size == 1); |
665 CX_TEST_ASSERT(iter.depth == 1); |
665 CX_TEST_ASSERT(iter.depth == 1); |
675 CxTreeIterator iter = cx_tree_iterator(NULL, false, tree_children(tree_node)); |
675 CxTreeIterator iter = cx_tree_iterator(NULL, false, tree_children(tree_node)); |
676 CX_TEST_ASSERT(!iter.visit_on_exit); |
676 CX_TEST_ASSERT(!iter.visit_on_exit); |
677 CX_TEST_ASSERT(!iter.exiting); |
677 CX_TEST_ASSERT(!iter.exiting); |
678 CX_TEST_ASSERT(iter.counter == 0); |
678 CX_TEST_ASSERT(iter.counter == 0); |
679 CX_TEST_ASSERT(iter.node == NULL); |
679 CX_TEST_ASSERT(iter.node == NULL); |
680 CX_TEST_ASSERT(!iter.base.mutating); |
680 CX_TEST_ASSERT(!iter.base.allow_remove); |
681 CX_TEST_ASSERT(!iter.base.remove); |
681 CX_TEST_ASSERT(!iter.base.remove); |
682 CX_TEST_ASSERT(iter.stack == NULL); |
682 CX_TEST_ASSERT(iter.stack == NULL); |
683 CX_TEST_ASSERT(iter.stack_capacity == 0); |
683 CX_TEST_ASSERT(iter.stack_capacity == 0); |
684 CX_TEST_ASSERT(iter.stack_size == 0); |
684 CX_TEST_ASSERT(iter.stack_size == 0); |
685 CX_TEST_ASSERT(iter.depth == 0); |
685 CX_TEST_ASSERT(iter.depth == 0); |
1015 cx_tree_link(&root, &child, tree_node_layout); |
1015 cx_tree_link(&root, &child, tree_node_layout); |
1016 CX_TEST_DO { |
1016 CX_TEST_DO { |
1017 CxTreeVisitor iter = cx_tree_visitor(&root, tree_children(tree_node)); |
1017 CxTreeVisitor iter = cx_tree_visitor(&root, tree_children(tree_node)); |
1018 CX_TEST_ASSERT(iter.counter == 1); |
1018 CX_TEST_ASSERT(iter.counter == 1); |
1019 CX_TEST_ASSERT(iter.node == &root); |
1019 CX_TEST_ASSERT(iter.node == &root); |
1020 CX_TEST_ASSERT(!iter.base.mutating); |
1020 CX_TEST_ASSERT(!iter.base.allow_remove); |
1021 CX_TEST_ASSERT(!iter.base.remove); |
1021 CX_TEST_ASSERT(!iter.base.remove); |
1022 CX_TEST_ASSERT(iter.queue_next != NULL); |
1022 CX_TEST_ASSERT(iter.queue_next != NULL); |
1023 CX_TEST_ASSERT(iter.queue_last != NULL); |
1023 CX_TEST_ASSERT(iter.queue_last != NULL); |
1024 CX_TEST_ASSERT(iter.depth == 1); |
1024 CX_TEST_ASSERT(iter.depth == 1); |
1025 CX_TEST_ASSERT(iter.loc_next == offsetof(tree_node, next)); |
1025 CX_TEST_ASSERT(iter.loc_next == offsetof(tree_node, next)); |
1557 ); |
1557 ); |
1558 CX_TEST_ASSERT(failed == NULL); |
1558 CX_TEST_ASSERT(failed == NULL); |
1559 CX_TEST_ASSERT(processed == 0); |
1559 CX_TEST_ASSERT(processed == 0); |
1560 CX_TEST_ASSERT(talloc.alloc_total == 0); |
1560 CX_TEST_ASSERT(talloc.alloc_total == 0); |
1561 |
1561 |
1562 CxIterator iter = cxIterator(NULL, sizeof(void *), 0); |
1562 CxIterator iter = cxIterator(NULL, sizeof(void *), 0, false); |
1563 processed = cx_tree_add_iter( |
1563 processed = cx_tree_add_iter( |
1564 cxIteratorRef(iter), |
1564 cxIteratorRef(iter), |
1565 10, // deliberately specify more than the iter has |
1565 10, // deliberately specify more than the iter has |
1566 tree_node_file_search, |
1566 tree_node_file_search, |
1567 tree_node_file_create, alloc, |
1567 tree_node_file_create, alloc, |
1667 "/home/foo/bar", |
1667 "/home/foo/bar", |
1668 "/usr/lib64/", |
1668 "/usr/lib64/", |
1669 "/usr/lib/foo.so" |
1669 "/usr/lib/foo.so" |
1670 }; |
1670 }; |
1671 // create iterator for 4 elements, but choose to insert only 3 of them |
1671 // create iterator for 4 elements, but choose to insert only 3 of them |
1672 CxIterator iter = cxIterator(paths, sizeof(const char*), 4); |
1672 CxIterator iter = cxIterator(paths, sizeof(const char*), 4, false); |
1673 size_t processed = cx_tree_add_iter( |
1673 size_t processed = cx_tree_add_iter( |
1674 cxIteratorRef(iter), 3, |
1674 cxIteratorRef(iter), 3, |
1675 tree_node_file_search, |
1675 tree_node_file_search, |
1676 tree_node_file_create, alloc, |
1676 tree_node_file_create, alloc, |
1677 &failed, &root, tree_node_file_layout |
1677 &failed, &root, tree_node_file_layout |