test_numbers.c vervollständigt
This commit is contained in:
parent
92fa60f9dc
commit
5d976c50c1
@ -3,14 +3,85 @@
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
#include "numbers.h"
|
||||
#include "unity.h"
|
||||
|
||||
#include "unity/unity.h"
|
||||
|
||||
|
||||
void setUp(void) {
|
||||
// Falls notwendig, kann hier Vorbereitungsarbeit gemacht werden
|
||||
// gehört zu unit-Grundaufbau
|
||||
}
|
||||
|
||||
void tearDown(void) {
|
||||
// Hier kann Bereinigungsarbeit nach jedem Test durchgeführt werden
|
||||
// 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();
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user