| 2332 CX_TEST_ASSERT(root.data == 1); |
2332 CX_TEST_ASSERT(root.data == 1); |
| 2333 CX_TEST_ASSERT(child1.data == 1); |
2333 CX_TEST_ASSERT(child1.data == 1); |
| 2334 CX_TEST_ASSERT(child2.data == 1); |
2334 CX_TEST_ASSERT(child2.data == 1); |
| 2335 CX_TEST_ASSERT(child3.data == 1); |
2335 CX_TEST_ASSERT(child3.data == 1); |
| 2336 } |
2336 } |
| |
2337 } |
| |
2338 |
| |
2339 CX_TEST(test_tree_high_iterator) { |
| |
2340 CxTree *tree = cxTreeCreate( |
| |
2341 NULL, tree_node_file_create_hl, |
| |
2342 tree_node_file_search, tree_node_file_search_data, |
| |
2343 tree_node_file_layout |
| |
2344 ); |
| |
2345 cxTreeInsert(tree, "/"); |
| |
2346 cxTreeInsert(tree, "/etc"); |
| |
2347 cxTreeInsert(tree, "/home"); |
| |
2348 cxTreeInsert(tree, "/home/jane"); |
| |
2349 cxTreeInsert(tree, "/usr"); |
| |
2350 cxTreeInsert(tree, "/usr/local"); |
| |
2351 cxTreeInsert(tree, "/usr/local/lib"); |
| |
2352 cxTreeInsert(tree, "/var"); |
| |
2353 cxTreeInsert(tree, "/var/lib"); |
| |
2354 CX_TEST_DO { |
| |
2355 const char *expected_order[] = { |
| |
2356 "/", |
| |
2357 "/etc", |
| |
2358 "/home", |
| |
2359 "/home/jane", |
| |
2360 "/usr", |
| |
2361 "/usr/local", |
| |
2362 "/usr/local/lib", |
| |
2363 "/var", |
| |
2364 "/var/lib", |
| |
2365 }; |
| |
2366 const char *actual_order[9]; |
| |
2367 CxTreeIterator iter = cxTreeIterate(tree, false); |
| |
2368 cx_foreach(tree_node_file*, p, iter) { |
| |
2369 actual_order[iter.counter-1] = p->path; |
| |
2370 } |
| |
2371 CX_TEST_ASSERT(iter.counter == 9); |
| |
2372 for (unsigned i = 0; i < 9; i++) { |
| |
2373 CX_TEST_ASSERT(strcmp(expected_order[i], actual_order[i]) == 0); |
| |
2374 } |
| |
2375 } |
| |
2376 cxTreeFree(tree); |
| |
2377 } |
| |
2378 |
| |
2379 CX_TEST(test_tree_high_visitor) { |
| |
2380 CxTree *tree = cxTreeCreate( |
| |
2381 NULL, tree_node_file_create_hl, |
| |
2382 tree_node_file_search, tree_node_file_search_data, |
| |
2383 tree_node_file_layout |
| |
2384 ); |
| |
2385 cxTreeInsert(tree, "/"); |
| |
2386 cxTreeInsert(tree, "/etc"); |
| |
2387 cxTreeInsert(tree, "/home"); |
| |
2388 cxTreeInsert(tree, "/home/jane"); |
| |
2389 cxTreeInsert(tree, "/usr"); |
| |
2390 cxTreeInsert(tree, "/usr/local"); |
| |
2391 cxTreeInsert(tree, "/usr/local/lib"); |
| |
2392 cxTreeInsert(tree, "/var"); |
| |
2393 cxTreeInsert(tree, "/var/lib"); |
| |
2394 CX_TEST_DO { |
| |
2395 const char *expected_order[] = { |
| |
2396 "/", |
| |
2397 "/etc", |
| |
2398 "/home", |
| |
2399 "/usr", |
| |
2400 "/var", |
| |
2401 "/home/jane", |
| |
2402 "/usr/local", |
| |
2403 "/var/lib", |
| |
2404 "/usr/local/lib", |
| |
2405 }; |
| |
2406 const char *actual_order[9]; |
| |
2407 CxTreeVisitor iter = cxTreeVisit(tree); |
| |
2408 cx_foreach(tree_node_file*, p, iter) { |
| |
2409 actual_order[iter.counter-1] = p->path; |
| |
2410 } |
| |
2411 CX_TEST_ASSERT(iter.counter == 9); |
| |
2412 for (unsigned i = 0; i < 9; i++) { |
| |
2413 CX_TEST_ASSERT(strcmp(expected_order[i], actual_order[i]) == 0); |
| |
2414 } |
| |
2415 } |
| |
2416 cxTreeFree(tree); |
| 2337 } |
2417 } |
| 2338 |
2418 |
| 2339 CxTestSuite *cx_test_suite_tree_low_level(void) { |
2419 CxTestSuite *cx_test_suite_tree_low_level(void) { |
| 2340 CxTestSuite *suite = cx_test_suite_new("tree (low level)"); |
2420 CxTestSuite *suite = cx_test_suite_new("tree (low level)"); |
| 2341 |
2421 |
| 2390 cx_test_register(suite, test_tree_high_insert_many); |
2470 cx_test_register(suite, test_tree_high_insert_many); |
| 2391 cx_test_register(suite, test_tree_high_add_find_remove_nodes); |
2471 cx_test_register(suite, test_tree_high_add_find_remove_nodes); |
| 2392 cx_test_register(suite, test_tree_high_add_find_destroy_nodes); |
2472 cx_test_register(suite, test_tree_high_add_find_destroy_nodes); |
| 2393 cx_test_register(suite, test_tree_high_remove_or_destroy_root); |
2473 cx_test_register(suite, test_tree_high_remove_or_destroy_root); |
| 2394 cx_test_register(suite, test_tree_high_simple_destructor); |
2474 cx_test_register(suite, test_tree_high_simple_destructor); |
| |
2475 cx_test_register(suite, test_tree_high_iterator); |
| |
2476 cx_test_register(suite, test_tree_high_visitor); |
| 2395 |
2477 |
| 2396 return suite; |
2478 return suite; |
| 2397 } |
2479 } |