2025-11-22 16:26:38 +01:00

122 lines
2.3 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#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();
}