#include #include #include "stack.h" #include "unity.h" void test_push(void) { StackNode *testNode; int data = 1; // Test für leeren Stack testNode = push(NULL, &data); TEST_ASSERT_NOT_NULL(&testNode); TEST_ASSERT_NULL(testNode->next); TEST_ASSERT_EQUAL_INT(1, testNode->value); data = 2; // Test für nicht leeren Stack testNode = push(testNode, &data); TEST_ASSERT_NOT_NULL(&testNode); TEST_ASSERT_NOT_NULL(testNode->next); TEST_ASSERT_NULL(testNode->next->next); TEST_ASSERT_EQUAL_INT(1, testNode->value); TEST_ASSERT_EQUAL_INT(2, testNode->next->value); } StackNode* setup(int value, StackNode* next) { StackNode* node = malloc(sizeof(StackNode)); // allocate memory on heap if (node == NULL) { perror("malloc failed"); exit(EXIT_FAILURE); // or handle the error differently } node->value = value; node->next = next; return node; } void test_pop(void) { StackNode* node2 = setup(3, NULL); StackNode* node1 = setup(2, node2); StackNode* header = setup(1, node1); StackNode* temp; temp = pop(header); int after = 0; while(temp) { after++; temp = temp->next; } TEST_ASSERT_EQUAL_INT(2, after); TEST_ASSERT_NULL(node1->next); } void test_top(void) { StackNode* node2 = setup(3, NULL); StackNode* node1 = setup(2, node2); StackNode* header = setup(1, node1); int data = *(int *)top(header); TEST_ASSERT_EQUAL_INT(node2->value, data); } void test_clear() { StackNode* node2 = setup(3, NULL); StackNode* node1 = setup(2, node2); StackNode* header = setup(1, node1); StackNode* temp; clearStack(header); temp = header; int after = 0; while(temp) { after++; temp = temp->next; } TEST_ASSERT_NULL(after); } void setUp(void) { // Falls notwendig, kann hier Vorbereitungsarbeit gemacht werden } void tearDown(void) { // Hier kann Bereinigungsarbeit nach jedem Test durchgeführt werden } int main() { UNITY_BEGIN(); printf("============================\nStack tests\n============================\n"); RUN_TEST(test_push); RUN_TEST(test_pop); RUN_TEST(test_top); RUN_TEST(test_clear); return UNITY_END(); }