2025-11-23 12:24:46 +01:00

96 lines
2.3 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "unity.h"
#include "numbers.h"
/*
int compareInt(const void *arg1, const void *arg2) {
int a = *(const int *)arg1;
int b = *(const int *)arg2;
return a - b;
}
int compareString(const void *arg1, const void *arg2) {
const char *str1 = (const char *)arg1;
const char *str2 = (const char *)arg2;
return strcmp(str1, str2);
}*/
static void testCreateNumbersNotNull() {
unsigned int len = 10;
unsigned int *nums = createNumbers(len);
TEST_ASSERT_NOT_NULL(nums);
free(nums);
}
static void testCreateNumbersLength() {
unsigned int len = 20;
unsigned int *nums = createNumbers(len);
TEST_ASSERT_NOT_NULL(nums);
for (unsigned int i = 0; i < len; i++) {
TEST_ASSERT_UINT_WITHIN(len * 2, 0, nums[i]); // Überprüft, ob werte zwischen 0 und len*2 liegen
}
free(nums);
}
static void testCreateNumbersContainsDuplicate() {
unsigned int len = 30;
unsigned int *nums = createNumbers(len);
int duplicate = 0;
for (unsigned int i = 0; i < len; i++) {
for (unsigned int ii = i + 1; ii < len; ii++) {
if (nums[i] == nums[ii]) {
duplicate ++;
break;
}
}
}
TEST_ASSERT_EQUAL_UINT(1,duplicate);
free(nums);
}
static void testGetDuplicateNoDuplicates() {
unsigned int values[] = {1, 2, 3, 4, 5};
unsigned int dup = getDuplicate(values, 5);
TEST_ASSERT_EQUAL_UINT(0, dup);
}
static void testGetDuplicateWithDuplicate() {
unsigned int values[] = {1, 2, 3, 4, 2, 5};
unsigned int dup = getDuplicate(values, 6);
TEST_ASSERT_EQUAL_UINT(2, dup);
}
static void testGetDuplicateMultipleDuplicates() {
unsigned int values[] = {10, 20, 30, 10, 20, 40};
unsigned int dup = getDuplicate(values, 6);
TEST_ASSERT_EQUAL_UINT(10, dup);
}
void setUp(void){
}
void tearDown(void){
}
int main(){
UNITY_BEGIN();
printf("\n============================\nNumber tests\n============================\n");
RUN_TEST(testCreateNumbersNotNull);
RUN_TEST(testCreateNumbersLength);
RUN_TEST(testCreateNumbersContainsDuplicate);
RUN_TEST(testGetDuplicateNoDuplicates);
RUN_TEST(testGetDuplicateWithDuplicate);
RUN_TEST(testGetDuplicateMultipleDuplicates);
return UNITY_END();
}