generated from freudenreichan/info2Praktikum-DobleSpiel
64 lines
1.7 KiB
C
64 lines
1.7 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include "stack.h"
|
|
|
|
// Hilfsfunktion: assert ohne Abbruch
|
|
void check(int condition, const char *msg)
|
|
{
|
|
if (condition)
|
|
printf("[OK] %s\n", msg);
|
|
else
|
|
printf("[FAIL] %s\n", msg);
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
StackNode *stack = NULL;
|
|
|
|
printf("=== TEST: Stack Grundfunktionen ===\n");
|
|
|
|
// Test 1: Stack sollte anfangs leer sein
|
|
check(top(stack) == NULL, "Top auf leerem Stack liefert NULL.");
|
|
|
|
// Test 2: Werte pushen
|
|
int a = 10, b = 20, c = 30;
|
|
|
|
stack = push(stack, &a);
|
|
check(top(stack) == &a, "Push 10: Top liefert 10.");
|
|
|
|
stack = push(stack, &b);
|
|
check(top(stack) == &b, "Push 20: Top liefert 20.");
|
|
|
|
stack = push(stack, &c);
|
|
check(top(stack) == &c, "Push 30: Top liefert 30.");
|
|
|
|
// Test 3: Pop sollte zuletzt eingefügtes Element entfernen
|
|
stack = pop(stack);
|
|
check(top(stack) == &b, "Pop: Top liefert danach 20.");
|
|
|
|
stack = pop(stack);
|
|
check(top(stack) == &a, "Pop: Top liefert danach 10.");
|
|
|
|
// Test 4: Letztes Element entfernen
|
|
stack = pop(stack);
|
|
check(top(stack) == NULL, "Pop: Stack wieder leer.");
|
|
|
|
// Test 5: Pop auf leerem Stack -> kein Crash, Stack bleibt NULL
|
|
stack = pop(stack);
|
|
check(stack == NULL, "Pop auf leerem Stack gibt weiterhin NULL.");
|
|
|
|
// Test 6: ClearStack auf leerem Stack
|
|
clearStack(stack);
|
|
check(1, "ClearStack auf leerem Stack erfolgreich.");
|
|
|
|
// Test 7: ClearStack mit gefülltem Stack
|
|
stack = push(stack, &a);
|
|
stack = push(stack, &b);
|
|
stack = push(stack, &c);
|
|
clearStack(stack);
|
|
stack = NULL;
|
|
check(1, "ClearStack auf gefülltem Stack erfolgreich.");
|
|
|
|
printf("\nAlle Stack-Tests abgeschlossen.\n");
|
|
return 0;
|
|
} |