From 63e7c18db69d9fd4609636dbe2d03c452fc299e4 Mon Sep 17 00:00:00 2001 From: silvana884 Date: Wed, 10 Dec 2025 19:57:47 +0100 Subject: [PATCH] Alle geschriebenen Tests bestanden --- binTreeTest.c | 123 +++++++++++++++++++++++++-------------------- bintree.c | 2 +- bintree.o | Bin 0 -> 2205 bytes makefile | 29 +++++------ runBinTreeTest.exe | Bin 0 -> 71863 bytes stack.h | 4 +- stack.o | Bin 0 -> 1333 bytes 7 files changed, 87 insertions(+), 71 deletions(-) create mode 100644 bintree.o create mode 100644 runBinTreeTest.exe create mode 100644 stack.o diff --git a/binTreeTest.c b/binTreeTest.c index 5388347..e6d8b94 100644 --- a/binTreeTest.c +++ b/binTreeTest.c @@ -1,7 +1,6 @@ -#include -#include -#include "bintree.h" #include "unity.h" +#include +#include "bintree.h" static int compare(const void *a, const void *b) { @@ -24,8 +23,8 @@ void test_add_single_element_to_Tree() root = addToTree(root, &value, sizeof(int), compare, &duplicate); TEST_ASSERT_NOT_NULL(root); //uberprueft, ob root dem Tree hinzugefuegt werden konnte - TEST_ASSERT_EQUAL_INT(10, *(int*)root->data); //ueberprueft, ob der Wert fuer data richtig uebernommen wurde - TEST_ASSERT_EQUAL_INT(0, dup); //ueberprueft, ob isDuplicate 0 gesetzt wurde (neue Knoten -> isDuplicate sollte 0 sein) + TEST_ASSERT_EQUAL_INT(5, *(int*)root->data); //ueberprueft, ob der Wert fuer data richtig uebernommen wurde + TEST_ASSERT_EQUAL_INT(0, duplicate); //ueberprueft, ob isDuplicate 0 gesetzt wurde (neue Knoten -> isDuplicate sollte 0 sein) clearTree(root); } @@ -34,7 +33,7 @@ void test_add_single_element_to_Tree() void test_add_multiple_elements_to_Tree() { TreeNode *root = NULL; - int value = [2, 5, 7, 9]; + int value[] = {2, 5, 7, 9}; int duplicate = -1; for(int j = 0; j < 4; ++j) @@ -42,24 +41,11 @@ void test_add_multiple_elements_to_Tree() root = addToTree(root, &value[j], sizeof(int), compare, &duplicate); } - TEST_ASSERT_EQUAl_INT(4, sizeofTree(root)); + TEST_ASSERT_EQUAL_INT(4, treeSize(root)); clearTree(root); } -//Adds multiple elements to the tree, but only allows one duplicate -void test_add_multiplie_elements_one_dup() - { - TreeNode *root = NULL; - int value = [1, 3, 1, 4, 5, 6, 7, 5, 9, 10]; - int duplicate = -1; - for(int j = 0; j < 10; ++j) - { - root = addToTree(root, &value[j], sizeof(int), compare, &duplicate); - } - TEST_ASSERT_EQUAl_INT(9, sizeofTree(root)); - } - //Detects the size of a tree void test_detect_empty_size() { @@ -67,63 +53,92 @@ void test_detect_empty_size() } //checks, wether size of tree is correctly determined and wether clearTree() works -void test_detect_size() - { - //fuellt Baum +// Test: Duplikate nicht erlaubt (isDuplicate != NULL) +void test_detect_size() { TreeNode *root = NULL; - int value = [1, 3, 1, 4, 5, 6, 7, 5, 9, 10]; - int duplicate = -1; - for(int j = 0; j < 10; ++j) - { - root = addToTree(root, &value[j], sizeof(int), compare, &duplicate); + int values[] = {1, 3, 1, 4, 5, 6, 7, 5, 9, 10}; + int duplicate = 0; // wird pro Einfügen gesetzt + + for (int j = 0; j < 10; ++j) { + root = addToTree(root, &values[j], sizeof(int), compare, &duplicate); + if (duplicate) { + // Optional: prüfen, dass ein Duplikat erkannt wurde + TEST_ASSERT_TRUE(duplicate == 1); } - //ueberprueft, ob Baum korrekt gefuellt wurde - TEST_ASSERT_EQUAl_INT(9, sizeofTree(root)); + duplicate = 0; // zurücksetzen für nächstes Einfügen } + // Prüfen der Baumgröße ohne Duplikate + TEST_ASSERT_EQUAL_INT(8, treeSize(root)); + clearTree(root); - root = NULL; - TEST_ASSERT_EQUAL_INT(0, treeSize(root)); +} -//Traverses the three inorder to check wether nextTreeData works -void test_inorder() - { +// Test: Duplikate erlaubt (isDuplicate == NULL) +void test_add_multiplie_elements_one_dup() { + TreeNode *root = NULL; + int values[] = {1, 3, 1, 4, 5, 6, 7, 5, 9, 10}; + + for (int j = 0; j < 10; ++j) { + root = addToTree(root, &values[j], sizeof(int), compare, NULL); + } + + // Alle Werte inklusive Duplikate + TEST_ASSERT_EQUAL_INT(10, treeSize(root)); + + clearTree(root); +} + + +//Traverses the tree inorder to check wether nextTreeData works +// Hilfsfunktion: rekursive Inorder-Prüfung +void inorderCheck(TreeNode *node, int expected[], int *idx) { + if (node == NULL) return; + + // Linken Teilbaum prüfen + inorderCheck(node->left, expected, idx); + + // Aktuelles Element prüfen + TEST_ASSERT_EQUAL_INT(expected[*idx], *(int*)node->data); + (*idx)++; + + // Rechten Teilbaum prüfen + inorderCheck(node->right, expected, idx); +} + +void test_inorder() { TreeNode *root = NULL; int values[] = {5, 3, 7, 2, 4, 6, 8}; - // Einfügen - for (int i = 0; i < 7; i++) + // Baum füllen + for (int i = 0; i < 7; i++) { root = addToTree(root, &values[i], sizeof(int), compare, NULL); + } - // Erwartete Reihenfolge (inorder): 2,3,4,5,6,7,8 + // Erwartete Inorder-Reihenfolge int expected[] = {2,3,4,5,6,7,8}; int idx = 0; - void *p = nextTreeData(root); // Iterator starten + inorderCheck(root, expected, &idx); - while (p != NULL) - { - TEST_ASSERT_EQUAL_INT(expected[idx], *(int*)p); - idx++; - p = nextTreeData(NULL); // Fortsetzen mit NULL - } - - TEST_ASSERT_EQUAL(7, idx); //alle Einträge geprüft + // Alle Einträge geprüft? + TEST_ASSERT_EQUAL_INT(7, idx); clearTree(root); - } +} + int main() { UNITY_BEGIN(); - RUN_TEST(test_add_single_element_to_Tree()); - RUN_TEST(test_add_multiple_elements_to_Tree()); - RUN_TEST(test_add_multiplie_elements_one_dup()); - RUN_TEST(test_detect_empty_size()); - RUN_TEST(test_detect_size()); - RUN_TEST(test_inorder()); + RUN_TEST(test_add_single_element_to_Tree); + RUN_TEST(test_add_multiple_elements_to_Tree); + RUN_TEST(test_add_multiplie_elements_one_dup); + RUN_TEST(test_detect_empty_size); + RUN_TEST(test_detect_size); + RUN_TEST(test_inorder); return UNITY_END(); } diff --git a/bintree.c b/bintree.c index 025bb58..84f62f3 100644 --- a/bintree.c +++ b/bintree.c @@ -126,7 +126,7 @@ unsigned int treeSize(const TreeNode *root) { if(root == NULL) { - return numNodes; + return 0; } return 1 + treeSize(root->left) + treeSize(root->right); //1, weil eine Wurzel gefunden wurde und dann immer plus eins fuer einen Teilbaum diff --git a/bintree.o b/bintree.o new file mode 100644 index 0000000000000000000000000000000000000000..f9f8cee97676d348533cd4ff0514ee066c6c5e0a GIT binary patch literal 2205 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 //TODO: passenden Datentyp als struct anlegen -typedef{ +typedef struct Node{ void* data; - struct StackNode *next; + struct Node *next; }StackNode; diff --git a/stack.o b/stack.o new file mode 100644 index 0000000000000000000000000000000000000000..459d2c7d95a699cd6d11f3317c3499a2db4be9a3 GIT binary patch literal 1333 zcmZux&x_MQ6n<$^tsvoOX(401b zFTMJo=xs$${vQhq_2O+$>icGrbVB=J=6&zIZ{EDTnMwEaC4wC2L{)(dvSWV~3oIv7 zBQkiLmZWX4vZ!%jcUy5w;jMx$HBRkz6s?M>zE9wdiU~KFu$Jzbab0p;J1p`X4!X=c zPr27%GjD4rTP1aaRk)O|;WoYG%$xjnyky_>l4jMLd^9O`Syd^1{LSQL=g8nC&o0<` zLBq>mVbAY+Q}#@oysA-2an(yqzO&ve zm{_2{@Ie2e(E!{jXxtx*^w3bKl4bpczM^+w11v0vkBivk>**@$AK3kB#|A^jbQQYdhwL8)!=5QDtWv0em zDsitCf_nMh_Cul3<7JL~!*R+%@0U6FS}E6A;Y^k}GOoUVl%i`mJz0lj5UFn;Pf9P; zoaRy9J^x--bCfra9dr%7D~kHw%N)`*hiBZfqTEVNbVJwb#UNYnT0zjy8_#{F!-1b2 b4#(lS$J!p?|FS+FkEs**t-%YNnCkrxu$RGR literal 0 HcmV?d00001