test_numbers.c vervollständigt
This commit is contained in:
parent
92fa60f9dc
commit
5d976c50c1
@ -3,14 +3,85 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "numbers.h"
|
#include "numbers.h"
|
||||||
#include "unity.h"
|
#include "unity/unity.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void setUp(void) {
|
void setUp(void) {
|
||||||
// Falls notwendig, kann hier Vorbereitungsarbeit gemacht werden
|
// gehört zu unit-Grundaufbau
|
||||||
}
|
}
|
||||||
|
|
||||||
void tearDown(void) {
|
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