unity test fertig geschrieben

This commit is contained in:
Sven Hofmann 2025-12-12 08:56:15 +01:00
parent a1ff30c2ab
commit 3c7785bac9
3 changed files with 84 additions and 16 deletions

13
stack.c
View File

@ -6,15 +6,10 @@
* `pop`: entfernt das oberste Element, * `pop`: entfernt das oberste Element,
* `top`: liefert das oberste Element zurück, * `top`: liefert das oberste Element zurück,
* `clearStack`: gibt den gesamten Speicher frei. */ * `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. // 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 // *data soll gepusht werden
StackNode *push(StackNode *stack, void *data) StackNode *push(StackNode *stack, void *data)
{ {
@ -46,9 +41,9 @@ StackNode *pop(StackNode *stack)
{ {
if(stack != NULL) if(stack != NULL)
{ {
StackNode *nextNode = stack->next; StackNode *nextNode = stack->next; //zeiger der auf next zeigt da der Kopf entfernt wird
free(stack); free(stack);
stack = nextNode; stack = nextNode; //next wird der neue stack
} }
return stack; return stack;
} }

View File

@ -10,7 +10,7 @@ void tearDown(void)
{ {
} }
// 1. Test: push wenn data NULL ist -> stack bleibt NULL
void test_push_data_NULL(void) void test_push_data_NULL(void)
{ {
int test = 30; int test = 30;
@ -18,6 +18,8 @@ void test_push_data_NULL(void)
//data = NULL -> stack bleibt NULL //data = NULL -> stack bleibt NULL
TEST_ASSERT_NULL(push(NULL,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) void test_push_erster_push(void)
{ {
int test = 20; int test = 20;
@ -29,6 +31,8 @@ void test_push_erster_push(void)
TEST_ASSERT_EQUAL_MEMORY(&expected, stack, sizeof(StackNode)); TEST_ASSERT_EQUAL_MEMORY(&expected, stack, sizeof(StackNode));
TEST_ASSERT_NULL(stack->next); TEST_ASSERT_NULL(stack->next);
} }
//3. Test: zweimal pushen -> data wird zur zweiten Variable; next wird zur ersten
void test_push_zweiter_push(void) void test_push_zweiter_push(void)
{ {
int test = 20; int test = 20;
@ -42,6 +46,8 @@ void test_push_zweiter_push(void)
TEST_ASSERT_EQUAL_PTR(&test, stack->next->data); TEST_ASSERT_EQUAL_PTR(&test, stack->next->data);
TEST_ASSERT_NULL(stack->next->next); 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) void test_push_dritter_push(void)
{ {
int test = 20; int test = 20;
@ -60,7 +66,28 @@ void test_push_dritter_push(void)
TEST_ASSERT_NULL(stack->next->next->next); 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; int test = 20;
StackNode *stack = NULL; StackNode *stack = NULL;
@ -73,7 +100,9 @@ void test_pop_Stack_ungleich_NULL_zwei_pushes(void)
TEST_ASSERT_NULL(stack->next); 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; int test = 20;
StackNode *stack = NULL; StackNode *stack = NULL;
@ -90,13 +119,52 @@ void test_pop_Stack_ungleich_NULL_drei_pushes(void)
TEST_ASSERT_NULL(stack->next->next); 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; StackNode *stack = NULL;
stack = pop(stack);
TEST_ASSERT_NULL(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) int main(void)
{ {
UNITY_BEGIN(); UNITY_BEGIN();
@ -105,8 +173,13 @@ int main(void)
RUN_TEST(test_push_zweiter_push); RUN_TEST(test_push_zweiter_push);
RUN_TEST(test_push_dritter_push); RUN_TEST(test_push_dritter_push);
RUN_TEST(test_pop_stack_gleich_NULL); RUN_TEST(test_pop_stack_gleich_NULL);
RUN_TEST(test_pop_Stack_ungleich_NULL_zwei_pushes); RUN_TEST(test_pop_Stack_ungleich_NULL_eine_Node);
RUN_TEST(test_pop_Stack_ungleich_NULL_drei_pushes); 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(); return UNITY_END();
} }

Binary file not shown.