diff --git a/numbersTests.c b/numbersTests.c index 913d4a2..0c39113 100644 --- a/numbersTests.c +++ b/numbersTests.c @@ -2,6 +2,7 @@ #include #include "numbers.h" #include "unity.h" +#include //Initialisierung void setUp(void){} @@ -92,6 +93,73 @@ void test_getDuplicated_finds_correct_duplicate(void) free(arr); } +// --------------------------------------------------------------------------- +// Hilfsfunktion: prüft ob createNumbers einen Fehlerzustand signalisiert +// Du kannst diese später anpassen (z.B. wenn Fehler-Flags eingebaut werden) +// --------------------------------------------------------------------------- +static bool did_createNumbers_fail(unsigned int* ptr) +{ + return (ptr == NULL); // aktuell: NULL bedeutet Fehler +} + + +// --------------------------------------------------------------------------- +// Test: createNumbers soll bei count < 2 fehlschlagen +// --------------------------------------------------------------------------- +void test_createNumbers_rejects_too_small_counts(void) +{ + unsigned int* r1 = createNumbers(0); + unsigned int* r2 = createNumbers(1); + + TEST_ASSERT_TRUE(did_createNumbers_fail(r1)); + TEST_ASSERT_TRUE(did_createNumbers_fail(r2)); +} + + +// --------------------------------------------------------------------------- +// Test: createNumbers(2) soll funktionieren (Minimum gültiger Input) +// --------------------------------------------------------------------------- +void test_createNumbers_with_two_elements_is_valid(void) +{ + unsigned int* arr = createNumbers(2); + + TEST_ASSERT_FALSE(did_createNumbers_fail(arr)); + TEST_ASSERT_NOT_NULL(arr); + + // should contain exactly one duplicate + unsigned int c0 = countOccurrences(arr, 2, arr[0]); + unsigned int c1 = countOccurrences(arr, 2, arr[1]); + + TEST_ASSERT_TRUE((c0 == 2) || (c1 == 2)); + + free(arr); +} + + +// --------------------------------------------------------------------------- +// Test: getDuplicate() soll Fehler erkennen, wenn arr == NULL +// --------------------------------------------------------------------------- +void test_getDuplicate_handles_null_pointer(void) +{ + unsigned int result = getDuplicate(NULL, 10); +// Erwartung: Fehlerzustand → aktuell vermutlich 0 oder UINT_MAX + // Wir prüfen nur, DASS es ein Fehler ist: + TEST_ASSERT_TRUE(result == 0 || result == UINT_MAX); +} + + +// --------------------------------------------------------------------------- +// Test: getDuplicated) soll Fehler erkennen, wenn count < 2 +// --------------------------------------------------------------------------- +void test_getDuplicate_handles_invalid_count(void) +{ + unsigned int dummy[1] = { 5 }; + + unsigned int result = getDuplicate(dummy, 1); + + TEST_ASSERT_TRUE(result == 0 || result == UINT_MAX); +} + // --------------------------------------------------------------------------- // main() für Unity // --------------------------------------------------------------------------- @@ -102,6 +170,10 @@ int main(void) RUN_TEST(test_createNumbers_returns_valid_array); RUN_TEST(test_createNumbers_contains_exactly_one_duplicate); RUN_TEST(test_getDuplicated_finds_correct_duplicate); + RUN_TEST(test_createNumbers_rejects_too_small_counts); + RUN_TEST(test_createNumbers_with_two_elements_is_valid); + RUN_TEST(test_getDuplicate_handles_null_pointer); + RUN_TEST(test_getDuplicate_handles_invalid_count); return UNITY_END(); } \ No newline at end of file