#include #include #include #include #include "unity.h" #include "stack.h" static void pushNeuerStack(){ int wert = 2; StackNode *tester = push(NULL,&wert); int gespeicherterWert = *(int*)(tester->data); TEST_ASSERT_EQUAL_INT(*(int*)(tester->data),2); TEST_ASSERT_TRUE(tester->dannach == NULL); clearStack(tester); } static void pushVorhandenerStack(){ StackNode *stack = NULL; int a = 1; stack = push(stack, &a); int b = 2; stack = push(stack,&b); int gespeicherterWert = *(int*)(stack->data); TEST_ASSERT_EQUAL_INT(*(int*)(stack->data),2); TEST_ASSERT_EQUAL_INT(*(int*)(stack->dannach->data),1); clearStack(stack); } void testTop(){ StackNode *stack = NULL; int a = 1; int b = 2; stack = push(stack, &a); stack = push(stack, &b); TEST_ASSERT_EQUAL_INT(2, *(int *)top(stack)); // top sollte b sein clearStack(stack); } void testPop(void) { StackNode *stack = NULL; int a = 1; int b = 2; stack = push(stack, &a); stack = push(stack, &b); TEST_ASSERT_EQUAL_INT(2, *(int *)top(stack)); // top sollte b sein stack = pop(stack); TEST_ASSERT_NOT_NULL(stack); TEST_ASSERT_EQUAL_INT(1, *(int *)top(stack)); // top sollte a sein stack = pop(stack); TEST_ASSERT_NULL(stack); // leerer Stack nach pop clearStack(stack); } void testPopLeererStack(void) { StackNode *stack = NULL; stack = pop(stack); TEST_ASSERT_NULL(stack); } void testClearStackAllesFrei(void) { StackNode *stack = NULL; int *a = malloc(sizeof(int)); int *b = malloc(sizeof(int)); *a = 10; *b = 20; stack = push(stack, a); stack = push(stack, b); clearStack(stack); TEST_ASSERT_TRUE(1); // Wenn kein Crash und Speicher sauber, gilt als bestanden } void setUp(void){ } void tearDown(void){ } int main(){ UNITY_BEGIN(); printf("\n============================\nStack tests\n============================\n"); RUN_TEST(pushNeuerStack); RUN_TEST(pushVorhandenerStack); RUN_TEST(testTop); RUN_TEST(testPop); RUN_TEST(testPopLeererStack); RUN_TEST(testClearStackAllesFrei); return UNITY_END(); }