#include #include #include "unity/unity.h" #include "numbers.h" static unsigned int count_number_occurrence(const unsigned int *arr, unsigned int len, unsigned int value) { unsigned int count = 0; for (unsigned int i = 0; i < len; i++) { if (arr[i] == value) count++; } return count; } void test_length_and_duplicate() { setSeed(1); unsigned int len = 10; unsigned int *test_numbers = createNumbers(len); TEST_ASSERT_NOT_NULL(test_numbers); //Bereich checken: for (unsigned int i = 0; i < len; i++) { TEST_ASSERT_TRUE(test_numbers[i] >= 1); TEST_ASSERT_TRUE(test_numbers[i] <= len * 2); } //Prüfen, ob genau 1 Wert doppelt vorkommt: unsigned int duplicate = getDuplicate(test_numbers, len); TEST_ASSERT_NOT_EQUAL(0, duplicate); unsigned int occurrences = count_number_occurrence(test_numbers, len, duplicate); TEST_ASSERT_EQUAL_UINT(2, occurrences); //Prüfen, ob alle anderen Werte nur einmal vorkommen: for (unsigned int i = 1; i <= len * 2; i++) { if (i == duplicate) continue; unsigned int c = count_number_occurrence(test_numbers, len, i); TEST_ASSERT_TRUE(c <= 1); //Keine Zahl darf doppelt vorkommen. } free(test_numbers); } void test_duplicate_value() { unsigned int test_numbers[6] = {1, 2, 3, 4, 5, 5}; unsigned int duplicate = 0; duplicate = getDuplicate(test_numbers, 6); TEST_ASSERT_EQUAL(5, duplicate); } void test_duplicate_value_if_false() { unsigned int test_numbers[6] = {1, 2, 3, 4, 5, 6}; unsigned int duplicate = 0; duplicate = getDuplicate(test_numbers, 6); TEST_ASSERT_EQUAL(0, duplicate); } void setUp(void) {} void tearDown(void) {} int main(void) { UNITY_BEGIN(); RUN_TEST(test_length_and_duplicate); RUN_TEST(test_duplicate_value); RUN_TEST(test_duplicate_value_if_false); return UNITY_END(); }