generated from freudenreichan/info2Praktikum-DobleSpiel
67 lines
1.7 KiB
C
67 lines
1.7 KiB
C
#include <stdlib.h>
|
|
#include "unity/unity.h"
|
|
#include "stack.h"
|
|
|
|
void setUp(void) {}
|
|
void tearDown(void) {}
|
|
|
|
static StackNode *stack = NULL; // Für gemeinsame Benutzung in Tests
|
|
|
|
void test_push_and_top_should_return_last_integer(void) {
|
|
int *v1 = malloc(sizeof(int));
|
|
int *v2 = malloc(sizeof(int));
|
|
int *v3 = malloc(sizeof(int));
|
|
*v1 = 12; *v2 = 34; *v3 = 56;
|
|
|
|
// Push Werte auf Stack
|
|
stack = push(stack, v1);
|
|
TEST_ASSERT_NOT_NULL(stack);
|
|
TEST_ASSERT_EQUAL_INT(12, *(int *)top(stack));
|
|
|
|
stack = push(stack, v2);
|
|
TEST_ASSERT_EQUAL_INT(34, *(int *)top(stack));
|
|
|
|
stack = push(stack, v3);
|
|
TEST_ASSERT_EQUAL_INT(56, *(int *)top(stack));
|
|
|
|
// Ressourcen werden in anderem Test wieder entfernt!
|
|
}
|
|
|
|
void test_pop_should_remove_and_free_integers(void) {
|
|
// Gibt die gleichen Werte wie im vorherigen Push-Test frei
|
|
int *val;
|
|
|
|
val = top(stack);
|
|
TEST_ASSERT_EQUAL_INT(56, *val);
|
|
free(val);
|
|
stack = pop(stack);
|
|
|
|
val = top(stack);
|
|
TEST_ASSERT_EQUAL_INT(34, *val);
|
|
free(val);
|
|
stack = pop(stack);
|
|
|
|
val = top(stack);
|
|
TEST_ASSERT_EQUAL_INT(12, *val);
|
|
free(val);
|
|
stack = pop(stack);
|
|
|
|
TEST_ASSERT_NULL(stack);
|
|
}
|
|
|
|
void test_stack_empty_behavior(void) {
|
|
// Nach allen pops/clear-Operationen sollte Stack NULL sein
|
|
TEST_ASSERT_NULL(top(stack));
|
|
StackNode *tmp = pop(stack);
|
|
TEST_ASSERT_NULL(tmp);
|
|
stack = clearStack(stack); // Sollte NULL bleiben
|
|
TEST_ASSERT_NULL(stack);
|
|
}
|
|
|
|
int main(void) {
|
|
UNITY_BEGIN();
|
|
RUN_TEST(test_push_and_top_should_return_last_integer);
|
|
RUN_TEST(test_pop_should_remove_and_free_integers);
|
|
RUN_TEST(test_stack_empty_behavior);
|
|
return UNITY_END();
|
|
} |