From be37b3ff21e81c6b02d710be155c8ab21b415bf4 Mon Sep 17 00:00:00 2001 From: Alexei Date: Thu, 11 Dec 2025 11:15:44 +0100 Subject: [PATCH] =?UTF-8?q?Unity=20Tests=20f=C3=BCr=20stack.c=20geschriebe?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_stack.c | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 test_stack.c diff --git a/test_stack.c b/test_stack.c new file mode 100644 index 0000000..8cef152 --- /dev/null +++ b/test_stack.c @@ -0,0 +1,92 @@ +#include +#include "stack.h" +#include "unity.h" + +void test_push_and_top(void); + +void test_pop(void); + +void test_clearStack(void); + +void setUp(void) {} + +void tearDown(void) {} + + +int main(void) +{ + UNITY_BEGIN(); + + RUN_TEST(test_push_and_top); + RUN_TEST(test_pop); + RUN_TEST(test_clearStack); + + return UNITY_END(); +} + +void test_push_and_top(void) +{ + StackNode *stack = NULL; + + int *a = malloc(sizeof(int)); *a = 10; + int *b = malloc(sizeof(int)); *b = 20; + int *c = malloc(sizeof(int)); *c = 30; + + stack = push(stack, a); + stack = push(stack, b); + stack = push(stack, c); + + TEST_ASSERT_EQUAL_INT(30, *(int*)top(stack)); + + // Cleanup data manually + void *data; + stack = pop(stack, &data); free(data); + stack = pop(stack, &data); free(data); + stack = pop(stack, &data); free(data); + + TEST_ASSERT_NULL(stack); +} + +void test_pop(void) +{ + StackNode *stack = NULL; + + int *x = malloc(sizeof(int)); *x = 111; + int *y = malloc(sizeof(int)); *y = 222; + + stack = push(stack, x); + stack = push(stack, y); + + void *data; + + stack = pop(stack, &data); + TEST_ASSERT_EQUAL_INT(222, *(int*)data); + free(data); + + stack = pop(stack, &data); + TEST_ASSERT_EQUAL_INT(111, *(int*)data); + free(data); + + TEST_ASSERT_NULL(stack); +} + +void test_clearStack(void) +{ + StackNode *stack = NULL; + + int *p = malloc(sizeof(int)); *p = 7; + int *q = malloc(sizeof(int)); *q = 8; + + stack = push(stack, p); + stack = push(stack, q); + + // Pop to free data first! + void *data; + + stack = pop(stack, &data); free(data); + stack = pop(stack, &data); free(data); + + clearStack(&stack); + + TEST_ASSERT_NULL(stack); +} \ No newline at end of file