From 13cb5d8c869bf422edce07c883988f229ec8c981 Mon Sep 17 00:00:00 2001 From: Kristin Date: Tue, 9 Dec 2025 09:13:18 +0100 Subject: [PATCH] push test im teststack verbessert --- highscores.txt | 1 + test_stack.c | 55 +++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 44 insertions(+), 12 deletions(-) diff --git a/highscores.txt b/highscores.txt index c7639ae..04947fc 100644 --- a/highscores.txt +++ b/highscores.txt @@ -1,3 +1,4 @@ +Kristin;9944 Kristin;7947 Kristin;6962 Kristin;5975 diff --git a/test_stack.c b/test_stack.c index 533af6a..fc24468 100644 --- a/test_stack.c +++ b/test_stack.c @@ -5,31 +5,62 @@ #include "stack.h" +// StackNode *createNode(void *data) testen void test_createNode(void) { int testInt = 26; - StackNode *testNode = createNode(&testInt); + StackNode *testNode = createNode(&testInt); // Adresse des testInts - TEST_ASSERT_NOT_NULL(testNode); - TEST_ASSERT_EQUAL_PTR(&testInt, testNode->data); - TEST_ASSERT_NULL(testNode->next); + TEST_ASSERT_NOT_NULL( + testNode); // Speicher konnte reserviert werden, malloc ist nicht NULL + TEST_ASSERT_EQUAL_PTR(&testInt, testNode->data); // data pointer gesetzt + TEST_ASSERT_NULL(testNode->next); // vorheriger und nächster Eintrag NULL TEST_ASSERT_NULL(testNode->prev); - free(testNode); + free(testNode); // Speicher freigeben } +// StackNode *push(StackNode *stack, void *data) testen void test_pushDataToStack(void) { - int testInt = 27; + int testInts[] = {27, 28}; - StackNode *testNode = push(NULL, &testInt); + StackNode *testStack = NULL; // leeren testStack initialisieren - TEST_ASSERT_NOT_NULL(testNode); - TEST_ASSERT_EQUAL_PTR(&testInt, testNode->data); - TEST_ASSERT_NULL(testNode->next); - TEST_ASSERT_NULL(testNode->prev); + testStack = + push(testStack, &testInts[0]); // leerer Stack mit Adresse des testInts - free(testNode); + TEST_ASSERT_NOT_NULL(testStack); // im Fehlerfall wird testStack unverändert + // zurückgegeben -> bei Fehler NULL + TEST_ASSERT_EQUAL_PTR(&testInts[0], testStack->data); // data pointer gesetzt + TEST_ASSERT_NULL(testStack->next); // vorheriger und nächster pointer auf NULL + // gesetzt, da es nur einen Knoten gibt + TEST_ASSERT_NULL(testStack->prev); + + // zweiter Push + StackNode *oldHead = testStack; + + testStack = push(testStack, &testInts[1]); + + TEST_ASSERT_NOT_NULL(testStack); + TEST_ASSERT_NOT_EQUAL( + oldHead, + testStack); // bei malloc Fehler wird der head unverändert zurückgegeben + + TEST_ASSERT_EQUAL_PTR(&testInts[0], + oldHead->data); // data pointer wurden richtig gesetzt + TEST_ASSERT_EQUAL_PTR(&testInts[1], testStack->data); + + TEST_ASSERT_EQUAL_PTR(oldHead, testStack->next); + TEST_ASSERT_EQUAL_PTR(testStack, oldHead->prev); + TEST_ASSERT_NULL(testStack->prev); + + // Speicherfreigabe + testStack->next = NULL; + oldHead->prev = NULL; + + free(oldHead); + free(testStack); } void test_deleteTopElement(void) {