| 1907 result |= cxTreeInsert(tree, "/home/"); |
1907 result |= cxTreeInsert(tree, "/home/"); |
| 1908 result |= cxTreeInsert(tree, "/usr/lib/"); |
1908 result |= cxTreeInsert(tree, "/usr/lib/"); |
| 1909 result |= cxTreeInsert(tree, "/home/foo/"); |
1909 result |= cxTreeInsert(tree, "/home/foo/"); |
| 1910 CX_TEST_ASSERT(result == 0); |
1910 CX_TEST_ASSERT(result == 0); |
| 1911 CX_TEST_ASSERT(1 == cxTreeInsertArray(tree, "/home/foo/bar/", sizeof(const char*), 1)); |
1911 CX_TEST_ASSERT(1 == cxTreeInsertArray(tree, "/home/foo/bar/", sizeof(const char*), 1)); |
| 1912 CX_TEST_ASSERT(tree->size == 6); |
1912 CX_TEST_ASSERT(cxTreeSize(tree) == 6); |
| 1913 CX_TEST_ASSERT(0 != cxTreeInsert(tree, "newroot")); |
1913 CX_TEST_ASSERT(0 != cxTreeInsert(tree, "newroot")); |
| 1914 CX_TEST_ASSERT(tree->size == 6); |
1914 CX_TEST_ASSERT(cxTreeSize(tree) == 6); |
| 1915 |
1915 |
| 1916 CX_TEST_ASSERT(talloc.alloc_total == 8); |
1916 CX_TEST_ASSERT(talloc.alloc_total == 8); |
| 1917 CX_TEST_ASSERT(talloc.free_total == 1); // the one that could not be added |
1917 CX_TEST_ASSERT(talloc.free_total == 1); // the one that could not be added |
| 1918 |
1918 |
| 1919 cxTreeFree(tree); |
1919 cxTreeFree(tree); |
| 1942 "/home/foo/", |
1942 "/home/foo/", |
| 1943 "/home/foo/bar/", |
1943 "/home/foo/bar/", |
| 1944 "newroot" |
1944 "newroot" |
| 1945 }; |
1945 }; |
| 1946 CX_TEST_ASSERT(6 == cxTreeInsertArray(tree, paths, sizeof(const char*), 7)); |
1946 CX_TEST_ASSERT(6 == cxTreeInsertArray(tree, paths, sizeof(const char*), 7)); |
| 1947 CX_TEST_ASSERT(tree->size == 6); |
1947 CX_TEST_ASSERT(cxTreeSize(tree) == 6); |
| 1948 |
1948 |
| 1949 CX_TEST_ASSERT(talloc.alloc_total == 8); |
1949 CX_TEST_ASSERT(talloc.alloc_total == 8); |
| 1950 CX_TEST_ASSERT(talloc.free_total == 1); // the one that could not be added |
1950 CX_TEST_ASSERT(talloc.free_total == 1); // the one that could not be added |
| 1951 |
1951 |
| 1952 cxTreeFree(tree); |
1952 cxTreeFree(tree); |
| 1994 tree_node_file *foo = cxTreeFind(tree, "/home/foo/"); |
1994 tree_node_file *foo = cxTreeFind(tree, "/home/foo/"); |
| 1995 CX_TEST_ASSERT(NULL != foo); |
1995 CX_TEST_ASSERT(NULL != foo); |
| 1996 CX_TEST_ASSERT(0 == strcmp("/home/foo/", foo->path)); |
1996 CX_TEST_ASSERT(0 == strcmp("/home/foo/", foo->path)); |
| 1997 CX_TEST_ASSERT(NULL != foo->parent); |
1997 CX_TEST_ASSERT(NULL != foo->parent); |
| 1998 CX_TEST_ASSERT(0 == strcmp("/home/", foo->parent->path)); |
1998 CX_TEST_ASSERT(0 == strcmp("/home/", foo->parent->path)); |
| 1999 CX_TEST_ASSERT(tree->size == 6); |
1999 CX_TEST_ASSERT(cxTreeSize(tree) == 6); |
| 2000 |
2000 |
| 2001 CX_TEST_ASSERT(0 == cxTreeAddChild(tree, foo->parent, "/home/baz/")); |
2001 CX_TEST_ASSERT(0 == cxTreeAddChild(tree, foo->parent, "/home/baz/")); |
| 2002 tree_node_file *baz = cxTreeFind(tree, "/home/baz/"); |
2002 tree_node_file *baz = cxTreeFind(tree, "/home/baz/"); |
| 2003 CX_TEST_ASSERT(NULL != baz); |
2003 CX_TEST_ASSERT(NULL != baz); |
| 2004 CX_TEST_ASSERT(0 == strcmp("/home/baz/", baz->path)); |
2004 CX_TEST_ASSERT(0 == strcmp("/home/baz/", baz->path)); |
| 2005 CX_TEST_ASSERT(NULL != baz->parent); |
2005 CX_TEST_ASSERT(NULL != baz->parent); |
| 2006 CX_TEST_ASSERT(0 == strcmp("/home/", baz->parent->path)); |
2006 CX_TEST_ASSERT(0 == strcmp("/home/", baz->parent->path)); |
| 2007 CX_TEST_ASSERT(tree->size == 7); |
2007 CX_TEST_ASSERT(cxTreeSize(tree) == 7); |
| 2008 |
2008 |
| 2009 tree_node_file *home = cxTreeFind(tree, "/home/"); |
2009 tree_node_file *home = cxTreeFind(tree, "/home/"); |
| 2010 CX_TEST_ASSERT(NULL == cxTreeFindInSubtree(tree, "/usr/", foo, 0)); |
2010 CX_TEST_ASSERT(NULL == cxTreeFindInSubtree(tree, "/usr/", foo, 0)); |
| 2011 tree_node_file *bar = cxTreeFindInSubtree(tree, "/home/foo/bar/", home, 0); |
2011 tree_node_file *bar = cxTreeFindInSubtree(tree, "/home/foo/bar/", home, 0); |
| 2012 CX_TEST_ASSERT(NULL != bar); |
2012 CX_TEST_ASSERT(NULL != bar); |
| 2015 |
2015 |
| 2016 tree_node_file *share = cxCalloc(alloc, 1, sizeof(tree_node_file)); |
2016 tree_node_file *share = cxCalloc(alloc, 1, sizeof(tree_node_file)); |
| 2017 share->path = "/usr/share/"; |
2017 share->path = "/usr/share/"; |
| 2018 tree_node_file *usr = cxTreeFind(tree, "/usr/"); |
2018 tree_node_file *usr = cxTreeFind(tree, "/usr/"); |
| 2019 cxTreeAddChildNode(tree, usr, share); |
2019 cxTreeAddChildNode(tree, usr, share); |
| 2020 CX_TEST_ASSERT(tree->size == 8); |
2020 CX_TEST_ASSERT(cxTreeSize(tree) == 8); |
| 2021 |
2021 |
| 2022 cxTreeRemoveSubtree(tree, foo); |
2022 cxTreeRemoveSubtree(tree, foo); |
| 2023 CX_TEST_ASSERT(tree->size == 6); |
2023 CX_TEST_ASSERT(cxTreeSize(tree) == 6); |
| 2024 CX_TEST_ASSERT(foo->children == bar); |
2024 CX_TEST_ASSERT(foo->children == bar); |
| 2025 CX_TEST_ASSERT(foo->last_child == bar); |
2025 CX_TEST_ASSERT(foo->last_child == bar); |
| 2026 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/home/foo/")); |
2026 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/home/foo/")); |
| 2027 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/home/foo/bar/")); |
2027 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/home/foo/bar/")); |
| 2028 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/home/bar/")); |
2028 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/home/bar/")); |
| 2029 |
2029 |
| 2030 CX_TEST_ASSERT(0 == cxTreeRemoveNode(tree, usr, test_tree_remove_node_relink_mock)); |
2030 CX_TEST_ASSERT(0 == cxTreeRemoveNode(tree, usr, test_tree_remove_node_relink_mock)); |
| 2031 CX_TEST_ASSERT(tree->size == 5); |
2031 CX_TEST_ASSERT(cxTreeSize(tree) == 5); |
| 2032 CX_TEST_ASSERT(usr->parent == NULL); |
2032 CX_TEST_ASSERT(usr->parent == NULL); |
| 2033 CX_TEST_ASSERT(usr->children == NULL); |
2033 CX_TEST_ASSERT(usr->children == NULL); |
| 2034 CX_TEST_ASSERT(usr->last_child == NULL); |
2034 CX_TEST_ASSERT(usr->last_child == NULL); |
| 2035 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/usr/")); |
2035 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/usr/")); |
| 2036 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/usr/lib/")); |
2036 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/usr/lib/")); |
| 2085 tree_node_file *foo = cxTreeFind(tree, "/home/foo/"); |
2085 tree_node_file *foo = cxTreeFind(tree, "/home/foo/"); |
| 2086 CX_TEST_ASSERT(NULL != foo); |
2086 CX_TEST_ASSERT(NULL != foo); |
| 2087 CX_TEST_ASSERT(0 == strcmp("/home/foo/", foo->path)); |
2087 CX_TEST_ASSERT(0 == strcmp("/home/foo/", foo->path)); |
| 2088 CX_TEST_ASSERT(NULL != foo->parent); |
2088 CX_TEST_ASSERT(NULL != foo->parent); |
| 2089 CX_TEST_ASSERT(0 == strcmp("/home/", foo->parent->path)); |
2089 CX_TEST_ASSERT(0 == strcmp("/home/", foo->parent->path)); |
| 2090 CX_TEST_ASSERT(tree->size == 6); |
2090 CX_TEST_ASSERT(cxTreeSize(tree) == 6); |
| 2091 |
2091 |
| 2092 CX_TEST_ASSERT(0 == cxTreeAddChild(tree, foo->parent, "/home/baz/")); |
2092 CX_TEST_ASSERT(0 == cxTreeAddChild(tree, foo->parent, "/home/baz/")); |
| 2093 tree_node_file *baz = cxTreeFind(tree, "/home/baz/"); |
2093 tree_node_file *baz = cxTreeFind(tree, "/home/baz/"); |
| 2094 CX_TEST_ASSERT(NULL != baz); |
2094 CX_TEST_ASSERT(NULL != baz); |
| 2095 CX_TEST_ASSERT(0 == strcmp("/home/baz/", baz->path)); |
2095 CX_TEST_ASSERT(0 == strcmp("/home/baz/", baz->path)); |
| 2096 CX_TEST_ASSERT(NULL != baz->parent); |
2096 CX_TEST_ASSERT(NULL != baz->parent); |
| 2097 CX_TEST_ASSERT(0 == strcmp("/home/", baz->parent->path)); |
2097 CX_TEST_ASSERT(0 == strcmp("/home/", baz->parent->path)); |
| 2098 CX_TEST_ASSERT(tree->size == 7); |
2098 CX_TEST_ASSERT(cxTreeSize(tree) == 7); |
| 2099 |
2099 |
| 2100 tree_node_file *home = cxTreeFind(tree, "/home/"); |
2100 tree_node_file *home = cxTreeFind(tree, "/home/"); |
| 2101 CX_TEST_ASSERT(NULL == cxTreeFindInSubtree(tree, "/usr/", foo, 0)); |
2101 CX_TEST_ASSERT(NULL == cxTreeFindInSubtree(tree, "/usr/", foo, 0)); |
| 2102 tree_node_file *bar = cxTreeFindInSubtree(tree, "/home/foo/bar/", home, 0); |
2102 tree_node_file *bar = cxTreeFindInSubtree(tree, "/home/foo/bar/", home, 0); |
| 2103 CX_TEST_ASSERT(NULL != bar); |
2103 CX_TEST_ASSERT(NULL != bar); |
| 2106 |
2106 |
| 2107 tree_node_file *share = cxCalloc(alloc, 1, sizeof(tree_node_file)); |
2107 tree_node_file *share = cxCalloc(alloc, 1, sizeof(tree_node_file)); |
| 2108 share->path = "/usr/share/"; |
2108 share->path = "/usr/share/"; |
| 2109 tree_node_file *usr = cxTreeFind(tree, "/usr/"); |
2109 tree_node_file *usr = cxTreeFind(tree, "/usr/"); |
| 2110 cxTreeAddChildNode(tree, usr, share); |
2110 cxTreeAddChildNode(tree, usr, share); |
| 2111 CX_TEST_ASSERT(tree->size == 8); |
2111 CX_TEST_ASSERT(cxTreeSize(tree) == 8); |
| 2112 |
2112 |
| 2113 cxTreeDestroySubtree(tree, foo); |
2113 cxTreeDestroySubtree(tree, foo); |
| 2114 CX_TEST_ASSERT(tree->size == 6); |
2114 CX_TEST_ASSERT(cxTreeSize(tree) == 6); |
| 2115 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/home/foo/")); |
2115 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/home/foo/")); |
| 2116 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/home/foo/bar/")); |
2116 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/home/foo/bar/")); |
| 2117 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/home/bar/")); |
2117 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/home/bar/")); |
| 2118 |
2118 |
| 2119 CX_TEST_ASSERT(0 == cxTreeDestroyNode(tree, usr, test_tree_remove_node_relink_mock)); |
2119 CX_TEST_ASSERT(0 == cxTreeDestroyNode(tree, usr, test_tree_remove_node_relink_mock)); |
| 2120 CX_TEST_ASSERT(tree->size == 5); |
2120 CX_TEST_ASSERT(cxTreeSize(tree) == 5); |
| 2121 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/usr/")); |
2121 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/usr/")); |
| 2122 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/usr/lib/")); |
2122 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/usr/lib/")); |
| 2123 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/usr/share/")); |
2123 CX_TEST_ASSERT(NULL == cxTreeFind(tree, "/usr/share/")); |
| 2124 tree_node_file *relinked_share = cxTreeFind(tree, "/share/"); |
2124 tree_node_file *relinked_share = cxTreeFind(tree, "/share/"); |
| 2125 tree_node_file *relinked_lib = cxTreeFind(tree, "/lib/"); |
2125 tree_node_file *relinked_lib = cxTreeFind(tree, "/lib/"); |
| 2158 }; |
2158 }; |
| 2159 cxTreeInsertArray(tree, paths, sizeof(const char*), 6); |
2159 cxTreeInsertArray(tree, paths, sizeof(const char*), 6); |
| 2160 void *root = tree->root; |
2160 void *root = tree->root; |
| 2161 CX_TEST_ASSERT(0 != cxTreeRemoveNode(tree, root, NULL)); |
2161 CX_TEST_ASSERT(0 != cxTreeRemoveNode(tree, root, NULL)); |
| 2162 CX_TEST_ASSERT(tree->root == root); |
2162 CX_TEST_ASSERT(tree->root == root); |
| 2163 CX_TEST_ASSERT(tree->size == 6); |
2163 CX_TEST_ASSERT(cxTreeSize(tree) == 6); |
| 2164 CX_TEST_ASSERT(0 != cxTreeDestroyNode(tree, root, NULL)); |
2164 CX_TEST_ASSERT(0 != cxTreeDestroyNode(tree, root, NULL)); |
| 2165 CX_TEST_ASSERT(tree->root == root); |
2165 CX_TEST_ASSERT(tree->root == root); |
| 2166 CX_TEST_ASSERT(tree->size == 6); |
2166 CX_TEST_ASSERT(cxTreeSize(tree) == 6); |
| 2167 cxTreeRemoveSubtree(tree, root); |
2167 cxTreeRemoveSubtree(tree, root); |
| 2168 CX_TEST_ASSERT(tree->size == 0); |
2168 CX_TEST_ASSERT(cxTreeSize(tree) == 0); |
| 2169 CX_TEST_ASSERT(tree->root == NULL); |
2169 CX_TEST_ASSERT(tree->root == NULL); |
| 2170 CX_TEST_ASSERT(cxTreeDepth(tree) == 0); |
2170 CX_TEST_ASSERT(cxTreeDepth(tree) == 0); |
| 2171 cxTreeFree(tree); |
2171 cxTreeFree(tree); |
| 2172 CX_TEST_ASSERT(!cx_testing_allocator_verify(&talloc)); |
2172 CX_TEST_ASSERT(!cx_testing_allocator_verify(&talloc)); |
| 2173 CxTree *w = cxTreeCreateWrapped(alloc, root, tree_node_file_layout); |
2173 CxTree *w = cxTreeCreateWrapped(alloc, root, tree_node_file_layout); |