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_t tree = NULL;
tree = (struct _tree*)malloc(sizeof(struct _tree)); tree = (struct _tree*)malloc(sizeof(struct _tree));
if(tree != NULL) if(tree == NULL)
{ {
return NULL;
}
if(tree_avl_init(tree, obj_size) != true) if(tree_avl_init(tree, obj_size) != true)
{ {
free(tree); free(tree);
tree = NULL; return NULL;
}
} }
return tree; return tree;
} }
@ -2308,13 +2310,15 @@ tree_t tree_rb_new(uint32_t obj_size)
{ {
tree_t tree = NULL; tree_t tree = NULL;
tree = (struct _tree*)malloc(sizeof(struct _tree)); tree = (struct _tree*)malloc(sizeof(struct _tree));
if(tree != NULL) if(tree == NULL)
{ {
return NULL;
}
if(tree_rb_init(tree, obj_size) != true) if(tree_rb_init(tree, obj_size) != true)
{ {
free(tree); free(tree);
tree = NULL; return NULL;
}
} }
return tree; return tree;
} }

View File

@ -911,8 +911,6 @@ static void test_avltree_iter_2(void)
int buff[32]; int buff[32];
int temp = 0; int temp = 0;
uint32_t len = sizeof(data) / sizeof(data[0]); uint32_t len = sizeof(data) / sizeof(data[0]);
// int * iter = NULL;
int count = 0; int count = 0;
tree_t tree = tree_avl_new(sizeof(int)); 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)); TEST_ASSERT_TRUE(tree->insert(tree, &temp));
} }
printf("\n");
iterator_t iter = tree->iter(tree, ORDER_LEFT_PRE); iterator_t iter = tree->iter(tree, ORDER_LEFT_PRE);
count = 0;
while(iter->hasnext(iter)) while(iter->hasnext(iter))
{ {
temp = *(int *)iter->next(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); iter = tree->iter(tree, ORDER_LEFT_IN);
count = 0;
while(iter->hasnext(iter)) while(iter->hasnext(iter))
{ {
temp = *(int *)iter->next(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); iter = tree->iter(tree, ORDER_LEFT_POST);
count = 0;
while(iter->hasnext(iter)) while(iter->hasnext(iter))
{ {
temp = *(int *)iter->next(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); iter = tree->iter(tree, ORDER_LEFT_BREADTH);
count = 0;
while(iter->hasnext(iter)) while(iter->hasnext(iter))
{ {
temp = *(int *)iter->next(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); iter = tree->iter(tree, ORDER_RIGHT_PRE);
count = 0;
while(iter->hasnext(iter)) while(iter->hasnext(iter))
{ {
temp = *(int *)iter->next(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); iter = tree->iter(tree, ORDER_RIGHT_IN);
count = 0;
while(iter->hasnext(iter)) while(iter->hasnext(iter))
{ {
temp = *(int *)iter->next(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); iter = tree->iter(tree, ORDER_RIGHT_POST);
count = 0;
while(iter->hasnext(iter)) while(iter->hasnext(iter))
{ {
temp = *(int *)iter->next(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); iter = tree->iter(tree, ORDER_RIGHT_BREADTH);
count = 0;
while(iter->hasnext(iter)) while(iter->hasnext(iter))
{ {
temp = *(int *)iter->next(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)); TEST_ASSERT_TRUE(tree->clear(tree));
tree_free(&tree); tree_free(&tree);