From 5d976c50c179bdb97bfdd0283a0d69c5cd1975ee Mon Sep 17 00:00:00 2001 From: Florian Wetzel Date: Wed, 10 Dec 2025 14:19:37 +0100 Subject: [PATCH] =?UTF-8?q?test=5Fnumbers.c=20vervollst=C3=A4ndigt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_numbers.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 75 insertions(+), 4 deletions(-) diff --git a/test_numbers.c b/test_numbers.c index eb54168..14ff926 100644 --- a/test_numbers.c +++ b/test_numbers.c @@ -3,14 +3,85 @@ #include #include #include "numbers.h" -#include "unity.h" - +#include "unity/unity.h" void setUp(void) { - // Falls notwendig, kann hier Vorbereitungsarbeit gemacht werden + // gehört zu unit-Grundaufbau } void tearDown(void) { - // Hier kann Bereinigungsarbeit nach jedem Test durchgeführt werden + // gehört zu unit-Grundaufbau +} + +// prüft, ob ein Array nur EIN Duplikat enthält +static int countDuplicates(const unsigned int *arr, unsigned int len) { + int count = 0; + for (unsigned int i = 0; i < len; i++) { + for (unsigned int j = i + 1; j < len; j++) { + if (arr[i] == arr[j]) { + count++; + } + } + } + return count; +} + +// Prüfen, ob createNumbers ein korrektes Array liefert +static void test_createNumbers_basic(void) +{ + unsigned int len = 100; + unsigned int *arr = createNumbers(len); + + TEST_ASSERT_NOT_NULL(arr); // prüft ob Speicher korrekt + + // Prüfen: Länge stimmt + + // Prüfen: Array enthält GENAU EIN Duplikat + int dupCount = countDuplicates(arr, len); + TEST_ASSERT_EQUAL_INT(1, dupCount); + + free(arr); +} + +// TEST 2: Prüfen, ob getDuplicate die richtige doppelte Zahl erkennt +static void test_getDuplicate_correctValue(void) +{ + unsigned int len = 200; + unsigned int *arr = createNumbers(len); + + TEST_ASSERT_NOT_NULL(arr); + + unsigned int duplicate = getDuplicate(arr, len); + + // Manuelle Kontrolle: Der gefundene Wert muss tatsächlich doppelt vorkommen + int occurrences = 0; + for (unsigned int i = 0; i < len; i++) { + if (arr[i] == duplicate) { + occurrences++; + } + } + + TEST_ASSERT_EQUAL_INT(2, occurrences); + + free(arr); +} + +// TEST 3: getDuplicate gibt 0 aus bei Fehlern +static void test_getDuplicate_errors(void) +{ + TEST_ASSERT_EQUAL_UINT(0, getDuplicate(NULL, 10)); + TEST_ASSERT_EQUAL_UINT(0, getDuplicate((unsigned int*)1, 1)); // len < 2 +} + +// Testbereich +int main(void) +{ + UNITY_BEGIN(); + + RUN_TEST(test_createNumbers_basic); + RUN_TEST(test_getDuplicate_correctValue); + RUN_TEST(test_getDuplicate_errors); + + return UNITY_END(); } \ No newline at end of file