From 3c7785bac9af247c307c02ae9b2150458843a58c Mon Sep 17 00:00:00 2001 From: hofmannsv99200 Date: Fri, 12 Dec 2025 08:56:15 +0100 Subject: [PATCH] unity test fertig geschrieben --- stack.c | 13 +++---- stackunitytest.c | 87 +++++++++++++++++++++++++++++++++++++++++++---- teststack.exe | Bin 150510 -> 151895 bytes 3 files changed, 84 insertions(+), 16 deletions(-) diff --git a/stack.c b/stack.c index 9ceff19..0cef506 100644 --- a/stack.c +++ b/stack.c @@ -6,15 +6,10 @@ * `pop`: entfernt das oberste Element, * `top`: liefert das oberste Element zurück, * `clearStack`: gibt den gesamten Speicher frei. */ - -/*typedef struct Stack{ - void *data; Zeiger auf den Nutzerdaten - struct Stack *next; Zeiger auf den Eintrag drunter -} StackNode; Stack oder StackNode kann beides als Namen für struct verwendet werden*/ - // stack->next --> greift auf Struct zu und zeigt auf dann auf next + // Pushes data as pointer onto the stack. -// *stack ist Zeiger auf neustes oberste Element im Stack (wird zurückgegeben) +// *ist das ganze konstrukt // *data soll gepusht werden StackNode *push(StackNode *stack, void *data) { @@ -46,9 +41,9 @@ StackNode *pop(StackNode *stack) { if(stack != NULL) { - StackNode *nextNode = stack->next; + StackNode *nextNode = stack->next; //zeiger der auf next zeigt da der Kopf entfernt wird free(stack); - stack = nextNode; + stack = nextNode; //next wird der neue stack } return stack; } diff --git a/stackunitytest.c b/stackunitytest.c index 4ea8b5b..33e98b0 100644 --- a/stackunitytest.c +++ b/stackunitytest.c @@ -10,7 +10,7 @@ void tearDown(void) { } - +// 1. Test: push wenn data NULL ist -> stack bleibt NULL void test_push_data_NULL(void) { int test = 30; @@ -18,6 +18,8 @@ void test_push_data_NULL(void) //data = NULL -> stack bleibt NULL TEST_ASSERT_NULL(push(NULL,NULL)); } + +// 2. Test: push data ungleich NULL -> data wird erneuert und next bleibt NULL void test_push_erster_push(void) { int test = 20; @@ -29,6 +31,8 @@ void test_push_erster_push(void) TEST_ASSERT_EQUAL_MEMORY(&expected, stack, sizeof(StackNode)); TEST_ASSERT_NULL(stack->next); } + +//3. Test: zweimal pushen -> data wird zur zweiten Variable; next wird zur ersten void test_push_zweiter_push(void) { int test = 20; @@ -42,6 +46,8 @@ void test_push_zweiter_push(void) TEST_ASSERT_EQUAL_PTR(&test, stack->next->data); TEST_ASSERT_NULL(stack->next->next); } + +// 4. Test: dreimal pushen -> data wird zur dritten variable; next zur zweiten; zweiter next zur dritten void test_push_dritter_push(void) { int test = 20; @@ -60,7 +66,28 @@ void test_push_dritter_push(void) TEST_ASSERT_NULL(stack->next->next->next); } -void test_pop_Stack_ungleich_NULL_zwei_pushes(void) + +// 5. Test: pop wenn Stack gleich NULL -> Stack bleibt NULL +void test_pop_stack_gleich_NULL(void) +{ + StackNode *stack = NULL; + stack = pop(stack); + TEST_ASSERT_NULL(stack); +} + + +// 6. Test: pop mit einer Node -> Stack wird wieder NULL +void test_pop_Stack_ungleich_NULL_eine_Node(void) +{ + int test = 20; + StackNode *stack = NULL; + stack = push(stack, &test); + stack = pop(stack); + TEST_ASSERT_NULL(stack); +} + +// 7. Test: pop mit zwei Nodes -> data wird zur ersten Variable; next wird Null +void test_pop_Stack_ungleich_NULL_zwei_Nodes(void) { int test = 20; StackNode *stack = NULL; @@ -73,7 +100,9 @@ void test_pop_Stack_ungleich_NULL_zwei_pushes(void) TEST_ASSERT_NULL(stack->next); } -void test_pop_Stack_ungleich_NULL_drei_pushes(void) + +// 8. Test: pop mikt drei Nodes -> data wird zur zweiten Variable; next zur ersten; next von next wird NULL +void test_pop_Stack_ungleich_NULL_drei_Nodes(void) { int test = 20; StackNode *stack = NULL; @@ -90,13 +119,52 @@ void test_pop_Stack_ungleich_NULL_drei_pushes(void) TEST_ASSERT_NULL(stack->next->next); } -void test_pop_stack_gleich_NULL(void) + +// 9. Test: top wenn stack gleich NULL -> gibt null zurück +void test_top_stack_gleich_NULL(void) { StackNode *stack = NULL; - stack = pop(stack); TEST_ASSERT_NULL(stack); } + +// 10. Test: top wenn eine Node -> gibt erste Variable aus +void test_top_stack_ungleich_NULL_eine_Node(void) +{ + int test = 20; + StackNode *stack = NULL; + stack = push(stack, &test); + TEST_ASSERT_EQUAL_PTR(&test, top(stack)); +} + + +// 11. Test: top bei zwei Nodes -> gibt zweite Variable aus +void test_top_stack_ungleich_NULL_zwei_Node(void) +{ + int test = 20; + StackNode *stack = NULL; + stack = push(stack, &test); + int test2 = 40; + stack = push(stack, &test2); + TEST_ASSERT_EQUAL_PTR(&test2, top(stack)); +} + + +// 12. Test: top bei drei Nodes -> gibt dritte Variable +void test_top_stack_ungleich_NULL_drei_Node(void) +{ + int test = 20; + StackNode *stack = NULL; + stack = push(stack, &test); + int test2 = 40; + stack = push(stack, &test2); + int test3 = 60; + stack = push(stack, &test3); + TEST_ASSERT_EQUAL_PTR(&test3, top(stack)); +} + + + int main(void) { UNITY_BEGIN(); @@ -105,8 +173,13 @@ int main(void) RUN_TEST(test_push_zweiter_push); RUN_TEST(test_push_dritter_push); RUN_TEST(test_pop_stack_gleich_NULL); - RUN_TEST(test_pop_Stack_ungleich_NULL_zwei_pushes); - RUN_TEST(test_pop_Stack_ungleich_NULL_drei_pushes); + RUN_TEST(test_pop_Stack_ungleich_NULL_eine_Node); + RUN_TEST(test_pop_Stack_ungleich_NULL_zwei_Nodes); + RUN_TEST(test_pop_Stack_ungleich_NULL_drei_Nodes); + RUN_TEST(test_top_stack_gleich_NULL); + RUN_TEST(test_top_stack_ungleich_NULL_eine_Node); + RUN_TEST(test_top_stack_ungleich_NULL_zwei_Node); + RUN_TEST(test_top_stack_ungleich_NULL_drei_Node); return UNITY_END(); } diff --git a/teststack.exe b/teststack.exe index 39c99598430abb81257ede4beb84f75e283a5b8d..4ea259dff9f40d0fefc083062831ff2fed0aed1e 100644 GIT binary patch delta 24088 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 F{{fs#-`D^E