#include "unity.h" #include #include #include #include "numbers.h" #define TEST_ARRAY_LEN 100 // Speicher für ein Array wird reserviert void test_createNumbers_length(void) { // erstellt ein Array der Länge hundert unsigned int *testArray = createNumbers(TEST_ARRAY_LEN); TEST_ASSERT_NOT_NULL(testArray); free(testArray); } // Duplikat ist genau einmal vorhanden void test_createNumbers_single_duplicate(void) { unsigned int *testArray = createNumbers(TEST_ARRAY_LEN); // Array erstellen TEST_ASSERT_NOT_NULL(testArray); // Speicher konnte reserviert werden unsigned int duplicate = getDuplicate(testArray, TEST_ARRAY_LEN); // Duplikat holen TEST_ASSERT_TRUE(duplicate > 0); // Duplikat ist größer als 0 TEST_ASSERT_TRUE( duplicate < (2 * TEST_ARRAY_LEN)); // Duplikat liegt im vorgegebenen Zahlenbereich unsigned int count = 0; // Anzahl der Duplikate for (unsigned int i = 0; i < TEST_ARRAY_LEN; i++) { // Einträge des testArrays auf Duplikate prüfen if (testArray[i] == duplicate) { count++; } } TEST_ASSERT_EQUAL_UINT(2, count); // Duplikat zwei mal vorhanden free(testArray); // Speicher freigeben } // getDuplicate testen void test_getDuplicate_manual_array( void) { // duplikat in fremden array wird gefunden unsigned int numbers[5] = {10, 20, 30, 40, 20}; unsigned int duplicate = getDuplicate(numbers, 5); TEST_ASSERT_EQUAL_UINT(20, duplicate); } // getDuplicate erkennt fehlerhaftes Array void test_getDuplicate_invalid_input(void) { TEST_ASSERT_EQUAL_UINT( 0, getDuplicate(NULL, 5)); // unsigned int getDuplicate(const unsigned int // *numbers, unsigned int len) unsigned int testArray[1] = {2}; TEST_ASSERT_EQUAL_UINT(0, getDuplicate(testArray, 1)); } void setUp(void) {} void tearDown(void) {} int main(void) { UNITY_BEGIN(); printf("\n------------------------numbers test------------------------\n\n"); RUN_TEST(test_createNumbers_length); RUN_TEST(test_createNumbers_single_duplicate); RUN_TEST(test_getDuplicate_manual_array); RUN_TEST(test_getDuplicate_invalid_input); return UNITY_END(); }