#include #include #include #include #include "numbers.h" #include "unity/unity.h" void setUp(void) { // gehört zu unit-Grundaufbau } void tearDown(void) { // 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(); }