tests/test_tree.c

changeset 1511
3985ca9b18e0
parent 1506
2a4339475bcf
equal deleted inserted replaced
1510:89cf6b4a5792 1511:3985ca9b18e0
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 }

mercurial