tree迭代器单元测试通过

This commit is contained in:
建峰 2025-04-24 19:12:16 +08:00
parent 34875ce3fa
commit f9486bae40
2 changed files with 59 additions and 32 deletions

View File

@ -2294,13 +2294,15 @@ tree_t tree_avl_new(uint32_t obj_size)
{
tree_t tree = NULL;
tree = (struct _tree*)malloc(sizeof(struct _tree));
if(tree != NULL)
if(tree == NULL)
{
if(tree_avl_init(tree, obj_size) != true)
{
free(tree);
tree = NULL;
}
return NULL;
}
if(tree_avl_init(tree, obj_size) != true)
{
free(tree);
return NULL;
}
return tree;
}
@ -2308,13 +2310,15 @@ tree_t tree_rb_new(uint32_t obj_size)
{
tree_t tree = NULL;
tree = (struct _tree*)malloc(sizeof(struct _tree));
if(tree != NULL)
if(tree == NULL)
{
if(tree_rb_init(tree, obj_size) != true)
{
free(tree);
tree = NULL;
}
return NULL;
}
if(tree_rb_init(tree, obj_size) != true)
{
free(tree);
return NULL;
}
return tree;
}

View File

@ -911,8 +911,6 @@ static void test_avltree_iter_2(void)
int buff[32];
int temp = 0;
uint32_t len = sizeof(data) / sizeof(data[0]);
// int * iter = NULL;
int count = 0;
tree_t tree = tree_avl_new(sizeof(int));
@ -926,71 +924,96 @@ static void test_avltree_iter_2(void)
TEST_ASSERT_TRUE(tree->insert(tree, &temp));
}
printf("\n");
iterator_t iter = tree->iter(tree, ORDER_LEFT_PRE);
count = 0;
while(iter->hasnext(iter))
{
temp = *(int *)iter->next(iter);
tree->print_obj(&temp);
// tree->print_obj(&temp);
buff[count++] = temp;
}
printf("\n");
TEST_ASSERT_EQUAL_INT_ARRAY(rbt_expected_int_array[1], buff, count);
iter = tree->iter(tree, ORDER_LEFT_IN);
count = 0;
while(iter->hasnext(iter))
{
temp = *(int *)iter->next(iter);
tree->print_obj(&temp);
// tree->print_obj(&temp);
buff[count++] = temp;
}
printf("\n");
TEST_ASSERT_EQUAL_INT_ARRAY(rbt_expected_int_array[2], buff, count);
iter = tree->iter(tree, ORDER_LEFT_POST);
count = 0;
while(iter->hasnext(iter))
{
temp = *(int *)iter->next(iter);
tree->print_obj(&temp);
// tree->print_obj(&temp);
buff[count++] = temp;
}
printf("\n");
TEST_ASSERT_EQUAL_INT_ARRAY(rbt_expected_int_array[3], buff, count);
iter = tree->iter(tree, ORDER_LEFT_BREADTH);
count = 0;
while(iter->hasnext(iter))
{
temp = *(int *)iter->next(iter);
tree->print_obj(&temp);
// tree->print_obj(&temp);
buff[count++] = temp;
}
printf("\n");
TEST_ASSERT_EQUAL_INT_ARRAY(rbt_expected_int_array[4], buff, count);
iter = tree->iter(tree, ORDER_RIGHT_PRE);
count = 0;
while(iter->hasnext(iter))
{
temp = *(int *)iter->next(iter);
tree->print_obj(&temp);
// tree->print_obj(&temp);
buff[count++] = temp;
}
printf("\n");
TEST_ASSERT_EQUAL_INT_ARRAY(rbt_expected_int_array[5], buff, count);
iter = tree->iter(tree, ORDER_RIGHT_IN);
count = 0;
while(iter->hasnext(iter))
{
temp = *(int *)iter->next(iter);
tree->print_obj(&temp);
// tree->print_obj(&temp);
buff[count++] = temp;
}
printf("\n");
TEST_ASSERT_EQUAL_INT_ARRAY(rbt_expected_int_array[6], buff, count);
iter = tree->iter(tree, ORDER_RIGHT_POST);
count = 0;
while(iter->hasnext(iter))
{
temp = *(int *)iter->next(iter);
tree->print_obj(&temp);
// tree->print_obj(&temp);
buff[count++] = temp;
}
printf("\n");
TEST_ASSERT_EQUAL_INT_ARRAY(rbt_expected_int_array[7], buff, count);
iter = tree->iter(tree, ORDER_RIGHT_BREADTH);
count = 0;
while(iter->hasnext(iter))
{
temp = *(int *)iter->next(iter);
tree->print_obj(&temp);
// tree->print_obj(&temp);
buff[count++] = temp;
}
printf("\n");
TEST_ASSERT_EQUAL_INT_ARRAY(rbt_expected_int_array[8], buff, count);
TEST_ASSERT_TRUE(tree->clear(tree));
tree_free(&tree);