Implement stack + unit tests

This commit is contained in:
Harun Faizi 2025-12-15 19:14:02 +01:00
parent ce66b2546e
commit e1ef9ac76b
4 changed files with 27 additions and 7 deletions

View File

@ -29,14 +29,19 @@ program_obj_files = stack.o bintree.o numbers.o timer.o highscore.o
doble : main.o $(program_obj_files)
$(CC) $(FLAGS) $^ -o doble
$(program_obj_filesobj_files): %.o: %.c
$(CC) -c $(FLAGS) $^ -o $@
%.o: %.c
$(CC) -c $(FLAGS) $< -o $@
# --------------------------
# Unit Tests
# --------------------------
unitTests:
echo "needs to be implemented"
test_stack: test_stack.c stack.o
$(CC) $(FLAGS) test_stack.c stack.o -o test_stack.exe
unitTests: test_stack
./test_stack.exe
# --------------------------
# Clean

BIN
stack.o Normal file

Binary file not shown.

View File

@ -5,6 +5,9 @@
#include <stdlib.h>
#include "stack.h"
#define TEST(description, condition) \
printf("%-40s: %s\n", description, (condition) ? "OK" : "FAIL")
int main(void)
{
StackNode *stack = NULL;
@ -17,21 +20,33 @@ int main(void)
*a = 10;
*b = 20;
printf("Starte Unit Tests fuer Stack\n");
stack = push(stack, a);
stack = push(stack, b);
printf("Top sollte 20 sein, es kommt %d raus\n", *(int*)top(stack));
TEST("Top nach zwei Pushes == 20", *(int*)top(stack) == 20);
// pop test
stack = pop(stack);
printf("Top sollte jetzt 10 sein, es kommt %d raus\n", *(int*)top(stack));
TEST("Top == 10 nach Pop", *(int*)top(stack) == 10);
stack = pop(stack);
TEST("Stack leer nach zwei Pops", stack == NULL);
stack = push(stack, a);
stack = push(stack, b);
// clearStack test
printf("fuehre ClearStack aus...\n");
clearStack(stack);
stack = NULL;
TEST("clearStack ausgefuehrt (kein crash)", 1);
free(a);
free(b);

Binary file not shown.