generated from freudenreichan/info2Praktikum-DobleSpiel
72 lines
1.6 KiB
C
72 lines
1.6 KiB
C
#include <stdlib.h>
|
|
#include "unity.h"
|
|
#include "stack.h"
|
|
|
|
// Globale Variablen für den Test (optional, aber praktisch hier)
|
|
StackNode *stack = NULL;
|
|
int *a;
|
|
int *b;
|
|
|
|
void setUp(void) {
|
|
stack = NULL;
|
|
// Wir reservieren Speicher für jedes Test-Szenario frisch
|
|
a = malloc(sizeof(int));
|
|
b = malloc(sizeof(int));
|
|
*a = 10;
|
|
*b = 20;
|
|
}
|
|
|
|
void tearDown(void) {
|
|
// Aufräumen nach jedem Test
|
|
if (stack != NULL) {
|
|
clearStack(stack);
|
|
stack = NULL;
|
|
}
|
|
// Falls der Stack die Daten NICHT freest, müssen wir es tun:
|
|
// Hinweis: Wenn clearStack die Daten freest, darfst du hier a und b nicht free-en!
|
|
// Ich gehe davon aus, der Stack freest die Daten NICHT.
|
|
free(a);
|
|
free(b);
|
|
}
|
|
|
|
void test_push_and_top(void) {
|
|
stack = push(stack, a);
|
|
TEST_ASSERT_NOT_NULL(stack);
|
|
TEST_ASSERT_EQUAL_INT(10, *(int*)top(stack));
|
|
|
|
stack = push(stack, b);
|
|
TEST_ASSERT_EQUAL_INT(20, *(int*)top(stack));
|
|
}
|
|
|
|
void test_pop_logic(void) {
|
|
// Vorbereitung
|
|
stack = push(stack, a);
|
|
stack = push(stack, b);
|
|
|
|
// Test Pop 1
|
|
stack = pop(stack);
|
|
TEST_ASSERT_NOT_NULL(stack);
|
|
TEST_ASSERT_EQUAL_INT(10, *(int*)top(stack));
|
|
|
|
// Test Pop 2 (Stack sollte leer werden)
|
|
stack = pop(stack);
|
|
TEST_ASSERT_NULL(stack);
|
|
}
|
|
|
|
void test_clearStack(void) {
|
|
stack = push(stack, a);
|
|
stack = push(stack, b);
|
|
|
|
clearStack(stack);
|
|
stack = NULL; // Muss im Code manuell gemacht werden, wenn clearStack void ist
|
|
|
|
TEST_ASSERT_NULL(stack);
|
|
}
|
|
|
|
int main(void) {
|
|
UNITY_BEGIN();
|
|
RUN_TEST(test_push_and_top);
|
|
RUN_TEST(test_pop_logic);
|
|
RUN_TEST(test_clearStack);
|
|
return UNITY_END();
|
|
} |