void test_must_insert_root_node(){ Tree tree = createTree(compareInts); int data = 2; int result = insertIntoTree(&tree, NULL, &data); ASSERT(SUCCESS == result); disposeTree(&tree); }
void test_searching_root_node(){ Tree tree = createTree(cmpInt); int element1 =10; ASSERT(1 == insertTreeNode(&tree,NULL,&element1)); ASSERT(1 == search(&tree,&element1)); disposeTree(&tree); };
void test_removing_node_that_has_childs_should_fail(){ Tree tree = createTree(cmpInt); int element1 = 10,element2 = 20,element3 = 30,element4 = 40; insertTreeNode(&tree,NULL,&element1); insertTreeNode(&tree,&element1,&element2); ASSERT(0 == removeTreeNode(&tree,&element1)); disposeTree(&tree); };
void test_must_not_delete_any_Parent_node(){ Tree tree = createTree(compareInts); Iterator result; int data[2] = {10,23}; ASSERT(insertIntoTree(&tree, NULL, &data)); ASSERT(insertIntoTree(&tree, &data, &data[1])); ASSERT(0 == deleteFromTree(&tree,&data[0])); disposeTree(&tree); }
void test_removing_node_that_is_absent(){ Tree tree = createTree(cmpInt); int element1 = 10,element2 = 20,element3 = 30; Iterator it; insertTreeNode(&tree,NULL,&element1); insertTreeNode(&tree,&element1,&element2); ASSERT(0 == removeTreeNode(&tree,&element3)); disposeTree(&tree); };
void test_searching_nodes_depth_one(){ Tree tree = createTree(cmpInt); int element1 = 10,element2 = 20,element3 = 30; insertTreeNode(&tree,NULL,&element1); insertTreeNode(&tree,&element1,&element2); insertTreeNode(&tree,&element1,&element3); ASSERT(1 == search(&tree,&element2)); ASSERT(1 == search(&tree,&element3)); disposeTree(&tree); };
void test_inserting_two_nodes_one_root_and_its_child(){ Tree tree = createTree(cmpInt); Iterator it; int element1 = 10,element2 = 20; insertTreeNode(&tree,NULL,&element1); insertTreeNode(&tree,&element1,&element2); it = getChildren(&tree,&element1); ASSERT(element2 == *(int*)it.next(&it)); ASSERT(NULL == it.next(&it)); disposeTree(&tree); };
void test_inserting_first_node_in_linked_list(){ Tree tree = createTree(cmpInt); Iterator it; void *element; int element1 =10; ASSERT(1 == insertTreeNode(&tree,NULL,&element1)); it = getChildren(&tree,NULL); element = it.next(&it); ASSERT(*(int*)element == element1); disposeTree(&tree); };
void test_must_delete_node_at_second_level(){ Tree tree = createTree(compareInts); Iterator result; int data[2] = {10,23}; ASSERT(insertIntoTree(&tree, NULL, &data)); ASSERT(insertIntoTree(&tree, &data, &data[1])); ASSERT(deleteFromTree(&tree,&data[1])); result = getChildren(&tree, &data); ASSERT(0 == result.hasNext(&result)); disposeTree(&tree); }
void test_removing_leaf_node(){ Tree tree = createTree(cmpInt); int element1 = 10,element2 = 20; Iterator it; insertTreeNode(&tree,NULL,&element1); insertTreeNode(&tree,&element1,&element2); ASSERT(1 == removeTreeNode(&tree,&element2)); it = getChildren(&tree,&element1); ASSERT(NULL == it.next(&it)); disposeTree(&tree); };
void test_must_insert_nodes_at_different_levels(){ Tree tree = createTree(compareInts); Iterator it; int data[7] = {10,12,30,4,45,5,50}; ASSERT(insertIntoTree(&tree, NULL, &data[0])); ASSERT(insertIntoTree(&tree, &data[0], &data[1])); ASSERT(insertIntoTree(&tree, &data[1], &data[2])); ASSERT(insertIntoTree(&tree, &data[2], &data[3])); ASSERT(insertIntoTree(&tree, &data[3], &data[4])); ASSERT(insertIntoTree(&tree, &data[4], &data[5])); disposeTree(&tree); }
void test_must_insert_node_at_second_level(){ Tree tree = createTree(compareInts); int data[] = {5,10,15}; Iterator result; insertIntoTree(&tree, NULL, &data[0]); insertIntoTree(&tree, &data[0], &data[1]); insertIntoTree(&tree, &data[0], &data[2]); result = getChildren(&tree, &data); ASSERT(15 == *(int*)result.next(&result)); ASSERT(10 == *(int*)result.next(&result)); disposeTree(&tree); }
void test_inserting_three_nodes_one_after_the_other(){ Tree tree = createTree(cmpInt); Iterator it; int element1 = 10,element2 = 20,element3 = 30,element4 = 40; insertTreeNode(&tree,NULL,&element1); insertTreeNode(&tree,&element1,&element2); insertTreeNode(&tree,&element1,&element3); insertTreeNode(&tree,&element1,&element4); it = getChildren(&tree,&element1); ASSERT(element4 == *(int*)it.next(&it)); ASSERT(element3 == *(int*)it.next(&it)); ASSERT(element2 == *(int*)it.next(&it)); disposeTree(&tree); };
void test_inserting_node_at_depth_two(){ Tree tree = createTree(cmpInt); void * element; Iterator it; int element1 = 10,element2 = 20,element3 = 30,element4 = 40; insertTreeNode(&tree,NULL,&element1); insertTreeNode(&tree,&element1,&element2); insertTreeNode(&tree,&element2,&element3); insertTreeNode(&tree,&element2,&element4); it = getChildren(&tree,&element2); ASSERT(element4 == *(int*)it.next(&it)); ASSERT(element3 == *(int*)it.next(&it)); disposeTree(&tree); };
void test_removing_node_from_depth_two(){ Iterator it; Tree tree = createTree(cmpInt); int element1 = 10,element2 = 20,element3 = 30,element4 = 40; insertTreeNode(&tree,NULL,&element1); insertTreeNode(&tree,&element1,&element2); insertTreeNode(&tree,&element2,&element3); insertTreeNode(&tree,&element2,&element4); ASSERT(1 == removeTreeNode(&tree,&element3)); it = getChildren(&tree,&element2); ASSERT(element4 == *(int*)it.next(&it)); ASSERT(NULL == it.next(&it)); disposeTree(&tree); };
void test_must_search_element_in_the_tree(){ Tree tree = createTree(compareInts); Iterator result; int data[7] = {10,12,30,4,45,5,50}; ASSERT(insertIntoTree(&tree, NULL, &data[0])); ASSERT(insertIntoTree(&tree, &data[0], &data[1])); ASSERT(insertIntoTree(&tree, &data[1], &data[2])); ASSERT(insertIntoTree(&tree, &data[2], &data[3])); ASSERT(insertIntoTree(&tree, &data[3], &data[4])); ASSERT(insertIntoTree(&tree, &data[4], &data[5])); ASSERT(searchInTree(&tree,&data[4])); ASSERT(searchInTree(&tree,&data[2])); ASSERT(searchInTree(&tree,&data[0])); disposeTree(&tree); }
void test_must_delete_nodes_from_different_levels(){ Tree tree = createTree(compareInts); Iterator result; int data[7] = {10,12,30,4,45,5,50}; ASSERT(insertIntoTree(&tree, NULL, &data[0])); ASSERT(insertIntoTree(&tree, &data[0], &data[1])); ASSERT(insertIntoTree(&tree, &data[1], &data[2])); ASSERT(insertIntoTree(&tree, &data[2], &data[3])); ASSERT(insertIntoTree(&tree, &data[3], &data[4])); ASSERT(insertIntoTree(&tree, &data[4], &data[5])); ASSERT(deleteFromTree(&tree, &data[5])); result = getChildren(&tree, &data[4]); ASSERT(0 == result.hasNext(&result)); disposeTree(&tree); }