74 lines
2.2 KiB
C
74 lines
2.2 KiB
C
#include "unity.h"
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#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();
|
|
}
|