anfang unit tests

This commit is contained in:
Jakob Hofmann 2025-12-03 14:10:36 +01:00
parent 231ff0dcbe
commit adaf02803c
4 changed files with 80 additions and 28 deletions

View File

@ -35,8 +35,8 @@ $(program_obj_filesobj_files): %.o: %.c
# --------------------------
# Unit Tests
# --------------------------
unitTests:
echo "needs to be implemented"
# --------------------------
# Clean

View File

@ -17,12 +17,13 @@ unsigned int RANDOM_SEED = 0;
// Returns NULL on errors. Use your implementation of the binary search tree to check for possible duplicates while
// creating random numbers.
unsigned int setSeed(seed)
unsigned int setSeed(unsigned int seed)
{
RANDOM_SEED = seed;
return RANDOM_SEED;
}
unsigned int createchecknumber(unsigned int len, unsigned int *numbers)
void createchecknumber(unsigned int len, unsigned int numbers[])
{
for (unsigned int i = 0; i < len; i++)
{
@ -67,7 +68,7 @@ unsigned int *createNumbers(unsigned int len)
unsigned int *numbers = malloc(sizeof(unsigned int) * len);
if (numbers == NULL)
{
return NULL;
return 0;
}
createchecknumber(len, numbers);
@ -86,9 +87,12 @@ unsigned int *createNumbers(unsigned int len)
} while (i == j);
numbers[i] = numbers[j];
return numbers;
}
unsigned int *sortnumbers(unsigned int numbers[], unsigned int len)
void sortnumbers(unsigned int numbers[], unsigned int len)
{
for (unsigned int j = 0; j < len - 1; j++)
{
@ -103,20 +107,35 @@ unsigned int *sortnumbers(unsigned int numbers[], unsigned int len)
}
}
}
return numbers;
}
// Returns only the only number in numbers which is present twice. Returns zero on errors.
unsigned int getDuplicate(const unsigned int numbers[], unsigned int len)
{
sortnumbers(numbers, len);
unsigned int *copynumbers = malloc(sizeof(unsigned int) * len);
if (copynumbers == NULL)
{
return 0;
}
for (unsigned int i = 0; i < len; i++)
{
copynumbers[i] = numbers[i];
}
sortnumbers(copynumbers, len);
for (unsigned i = 0; i < len - 1; i++)
{
if (numbers[i] == numbers[i+1])
if (copynumbers[i] == copynumbers[i+1])
{
return numbers[i];
unsigned int a = copynumbers[i];
free (copynumbers);
return a;
}
}
free (copynumbers);
return 0;
}

View File

@ -7,7 +7,7 @@ extern unsigned int RANDOM_SEED;
// Returns NULL on errors. Use your implementation of the binary search tree to check for possible duplicates while
// creating random numbers.
unsigned int setSeed(seed);
unsigned int setSeed(unsigned int seed);
unsigned int *createNumbers(unsigned int len);
//funktion mit srand(time)

View File

@ -1,40 +1,73 @@
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "unity/unity.h"
#include "numbers.h"
void test_enough_numbers() {
void test_length_and_duplicate()
{
setSeed(1);
unsigned int len = 20;
unsigned int *numbers = createNumbers(len);
unsigned int len = 10;
unsigned int *test_numbers = createNumbers(len);
if(numbers == NULL)
if (test_numbers == NULL)
{
return;
}
/*
setSeed(1);
unsigned int len = 10;
unsigned int *test_numbers = createNumbers(len);
free(numbers);
if (test_numbers == NULL)
{
return;
}
unsigned int expected[10] = {20, 8, 13, 19, 17, 16, 12, 0, 15, 14};
for (unsigned int i = 0; i < len; i++)
{
if (test_numbers[i] != expected[i])
{
free(test_numbers);
return;
}
}
free(test_numbers);
*/
}
void test_no_duplicates_except_one() {
void test_duplicate_value()
{
unsigned int test_numbers[6] = {1, 2, 3, 4, 5, 5};
unsigned int dupli = 0;
dupli = getDuplicate(test_numbers, 6);
TEST_ASSERT_EQUAL(5, dupli);
}
void test_is_duplicated() {
void test_duplicate_value_if_false()
{
unsigned int test_numbers[6] = {1, 2, 3, 4, 5, 6};
unsigned int dupli = 0;
dupli = getDuplicate(test_numbers, 6);
TEST_ASSERT_EQUAL(0, dupli);
}
int main(void) {
int main(void)
{
UNITY_BEGIN();
RUN_TEST(test_enough_numbers);
RUN_TEST(test_is_duplicated);
RUN_TEST(test_no_duplicates_except_one);
int result = UNITY_END();
print_test_result(result);
return result;
RUN_TEST(test_length_and_duplicate);
RUN_TEST(test_duplicate_value);
RUN_TEST(test_duplicate_value_if_false);
return UNITY_END();
}