From 81c7854033c968ef3ad107a1596ce63a61fb5f7b Mon Sep 17 00:00:00 2001 From: jf-home Date: Wed, 28 Aug 2024 00:15:21 +0800 Subject: [PATCH] =?UTF-8?q?unity=E5=A4=9A=E6=96=87=E4=BB=B6=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95=E7=9A=84=E7=BC=96=E5=86=99=E6=80=9D?= =?UTF-8?q?=E8=80=83=EF=BC=8C=E5=8F=AF=E8=83=BD=E6=97=A0=E6=B3=95=E5=81=9A?= =?UTF-8?q?=E5=A4=A7=E6=89=93=E5=8D=B0=E7=9A=84=E4=BF=A1=E6=81=AF=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E5=AE=9A=E4=BD=8D=E5=88=B0=E7=89=B9=E5=AE=9A=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E3=80=82=E5=8F=AA=E6=98=BE=E7=A4=BABEGIN=E7=9A=84?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demo/demo_stack.c | 2 +- include/stack.h | 2 +- mk.bat | 2 +- src/stack.c | 9 +++++---- src/tree.c | 8 ++++---- test/test.c | 9 ++++++--- test/test_stack.c | 26 ++++++++++++++++---------- 7 files changed, 34 insertions(+), 24 deletions(-) diff --git a/demo/demo_stack.c b/demo/demo_stack.c index 7caa6d0..133ea50 100644 --- a/demo/demo_stack.c +++ b/demo/demo_stack.c @@ -205,7 +205,7 @@ static void demo_stack_struct(void) } stack->destory(stack); - stack_free(stack); + stack_free(&stack); } void demo_stack(void) diff --git a/include/stack.h b/include/stack.h index 68bfcac..4ae173e 100644 --- a/include/stack.h +++ b/include/stack.h @@ -51,6 +51,6 @@ bool stack_init(struct _stack* self, uint32_t obj_size); bool stack_init2(struct _stack* self, uint32_t obj_size, uint32_t capacity); stack_t stack_new(void); -void stack_free(stack_t stack); +void stack_free(stack_t* stack); #endif // _STACK_H_ diff --git a/mk.bat b/mk.bat index 3e1ee85..3b97976 100644 --- a/mk.bat +++ b/mk.bat @@ -7,4 +7,4 @@ cmake -B build -G "MinGW Makefiles" make -C build make -C build install -start /b ./build/release/bin/test.exe +"./build/release/bin/test.exe" diff --git a/src/stack.c b/src/stack.c index 1f58b21..c8294ac 100644 --- a/src/stack.c +++ b/src/stack.c @@ -327,11 +327,12 @@ stack_t stack_new(void) return (struct _stack*)malloc(sizeof(struct _stack)); } -void stack_free(stack_t stack) +void stack_free(stack_t *stack) { - if(stack) + if(*stack) { - stack->destory(stack); - free(stack); + (*stack)->destory(*stack); + free(*stack); } + *stack = NULL; } diff --git a/src/tree.c b/src/tree.c index 4d8d352..c3234a7 100644 --- a/src/tree.c +++ b/src/tree.c @@ -699,7 +699,7 @@ void tree_preorder(struct _tree* self, struct _tree_node* root) } } } - stack_free(stack); + stack_free(&stack); #endif } @@ -784,7 +784,7 @@ void tree_inorder(struct _tree* self, struct _tree_node* root) } } } - stack_free(stack); + stack_free(&stack); #endif } @@ -879,8 +879,8 @@ void tree_postorder(struct _tree* self, struct _tree_node* root) self->print_obj(node->obj); } - stack_free(stack); - stack_free(stack2); + stack_free(&stack); + stack_free(&stack2); #endif } diff --git a/test/test.c b/test/test.c index 0eea107..a282e6a 100644 --- a/test/test.c +++ b/test/test.c @@ -70,8 +70,11 @@ void tearDown(void) int main(int argc, char const *argv[]) { - printf("\n---------- µ¥Ôª²âÊÔ ----------\n"); + printf("----- µ¥Ôª²âÊÔ -----\n"); UNITY_BEGIN(); - RUN_TEST(test_stack); - return UNITY_END(); + + test_stack(); + + UNITY_END(); + return 0; } diff --git a/test/test_stack.c b/test/test_stack.c index 06b3878..e275889 100644 --- a/test/test_stack.c +++ b/test/test_stack.c @@ -17,34 +17,40 @@ static void test_stack_num(void) int temp = 0; uint32_t len = sizeof(data) / sizeof(data[0]); - struct _stack s; - TEST_ASSERT_TRUE(stack_init(&s, sizeof(int))); - s.print_obj = print_num; + stack_t stack = NULL; + stack = stack_new(); + TEST_ASSERT_TRUE(stack_init(stack, sizeof(int))); + stack->print_obj = print_num; - TEST_ASSERT_FALSE(s.peek(&s, &temp)); + TEST_ASSERT_FALSE(stack->peek(stack, &temp)); for (i = 0; i < len; i++) { - s.push(&s, &data[i]); - s.peek(&s, &temp); + stack->push(stack, &data[i]); + stack->peek(stack, &temp); } for (i = 0; i < len + 1; i++) { - if (true == s.pop(&s, &temp)) + if (true == stack->pop(stack, &temp)) { - if(false != s.peek(&s, &temp)) + if(false != stack->peek(stack, &temp)) { TEST_ASSERT_EQUAL(data[len - 2 - i], temp); } } } - TEST_ASSERT_TRUE(s.empty(&s)); + TEST_ASSERT_TRUE(stack->empty(stack)); - s.destory(&s); + stack_free(&stack); + TEST_ASSERT_NULL(stack); } void test_stack(void) { + // UNITY_BEGIN(); + RUN_TEST(test_stack_num); + + // UNITY_END(); }