diff --git a/stack.c b/stack.c index dd516f9..6ce7eff 100644 --- a/stack.c +++ b/stack.c @@ -11,7 +11,7 @@ StackNode *push(StackNode *stack, void *data) { StackNode *newNode = malloc(sizeof(StackNode)); - if(*newNode == NULL) + if(newNode == NULL) { //printf("Fehler Bei Speicherallozierung!"); return NULL; @@ -58,7 +58,7 @@ void clearStack(StackNode *stack) if(stack == NULL) { //printf("Fehlerhafte Adresse uebergeben"); - return NULL; + return; } StackNode *currentNode = stack; diff --git a/stack.h b/stack.h index f438504..d80bda0 100644 --- a/stack.h +++ b/stack.h @@ -11,7 +11,7 @@ The latest element is taken from the stack. */ typedef struct StackNode { void *data; - struct SatckNode *next; + struct StackNode *next; } StackNode; // Pushes data as pointer onto the stack. diff --git a/test_stack.c b/test_stack.c new file mode 100644 index 0000000..26a219f --- /dev/null +++ b/test_stack.c @@ -0,0 +1,121 @@ +#include +#include +#include "stack.h" + +void testeStackBeschreiben() +{ + printf("=== Test: push() ===\n"); + + StackNode *stack = NULL; + int wert1 = 42; + stack = push(stack, &wert1); + + int *topValue = (int *)(stack->data); + if(topValue != NULL && *topValue == 42) + { + printf("Test 1: Erstes Element erfolgreich gepusht!\n"); + } + else + { + printf("Test 1: FEHLGESCHLAGEN!\n"); + } + + + int wert2 = 12; + stack = push(stack, &wert2); + + topValue = (int *)(stack->data); + int *secondValue = (int *)((stack->next)->data); + + if(topValue != NULL && *topValue == 12.25 && secondValue != NULL && *secondValue == 42) + { + printf("Test 2: Zweites Element erfolgreich gepusht!\n"); + } + else + { + printf("Test 2: FEHLGESCHLAGEN!\n"); + } + + + printf("=== Ende Test: push() ===\n\n"); + return; +} + +void testepop() +{ + printf("=== Test: pop() ===\n"); + + StackNode *stack = NULL; + int wert1 = 20; + int wert2 = 74; + + stack = push(stack, &wert1); + stack = push(stack, &wert2); + + stack = pop(stack); + + int *topValue = (int *)(stack->data); + + if(topValue != NULL && *topValue == 20) + { + printf("Test: Erstes Element erfolgreich gelöscht!\n"); + } + else + { + printf("Test 1: FEHLGESCHLAGEN!\n"); + } + + printf("=== Ende Test: pop() ===\n\n"); +} + +void testetop() +{ + printf("=== Test: top() ===\n"); + + StackNode *stack = NULL; + int wert1 = 20; + int wert2 = 74; + + stack = push(stack, &wert1); + stack = push(stack, &wert2); + + int *topValue = top(stack); + + if(topValue != NULL && *topValue == 74) + { + printf("Test: top() gibt korrektes Element zurück!\n"); + } + else + { + printf("Test: FEHLGESCHLAGEN!\n"); + } + + printf("=== Ende Test: top() ===\n\n"); +} + +void testeclearStack() +{ + printf("=== Test: clearStack() ===\n"); + + StackNode *stack = NULL; + int wert1 = 20; + int wert2 = 74; + + stack = push(stack, &wert1); + stack = push(stack, &wert2); + + clearStack(stack); + + printf("Test: clearStack() aufgerufen. Speicher freigegeben.\n"); + printf("=== Ende Test: clearStack() ===\n\n"); +} + +int main() +{ + testeStackBeschreiben(); + testepop(); + testetop(); + testeclearStack(); + + return 0; +} \ No newline at end of file