numbersTests added and added to makefile

This commit is contained in:
Jonas Urban 2025-11-19 23:30:44 +01:00
parent 680e72b478
commit 5d1d37f0df
2 changed files with 102 additions and 6 deletions

View File

@ -1,5 +1,6 @@
CC = gcc
FLAGS = -g -Wall -lm
CFLAGS = -g -Wall
LDFLAGS = -lm
ifeq ($(OS),Windows_NT)
include makefile_windows.variables
@ -27,7 +28,7 @@ doble_initial:
program_obj_files = stack.o bintree.o numbers.o timer.o highscore.o
doble : main.o $(program_obj_files)
$(CC) $(FLAGS) $^ -o doble
$(CC) $(FLAGS) $(LDFLAGS) $^ -o doble
$(program_obj_filesobj_files): %.o: %.c
$(CC) -c $(FLAGS) $^ -o $@
@ -35,15 +36,21 @@ $(program_obj_filesobj_files): %.o: %.c
# --------------------------
# Unit Tests
# --------------------------
unitTests:
echo "needs to be implemented"
unitTests: numbersTest
./runNumbersTest
numbersTest: numbers.o bintree.o numbersTest.o $($(unityfolder)/unity.c)
$(CC) $(FLAGS) $(LDFLAGS) $^ -o $@
%.o: %.c
$(CC) -c $(FLAGS) $< -o $@
# --------------------------
# Clean
# --------------------------
clean:
ifeq ($(OS),Windows_NT)
del /f *.o doble
del /f *.o doble runNumbersTest
else
rm -f *.o doble
rm -f *.o doble runNumbersTest
endif

89
I2_Dobble/numbersTest.c Normal file
View File

@ -0,0 +1,89 @@
#include "numbers.h"
#include "unity.h"
#include "unity_internals.h"
void test_createNumbers_no_null(void)
{
unsigned int *arr = createNumbers(10);
TEST_ASSERT_NOT_NULL(arr);
free(arr);
}
void test_createNumbers_has_exactly_one_duplicate(void)
{
unsigned int len = 100;
unsigned int *arr = createNumbers(len);
TEST_ASSERT_NOT_NULL(arr);
unsigned int dup = getDuplicate(arr, len);
TEST_ASSERT_NOT_EQUAL(0, dup);
int count = 0;
for (unsigned int i = 0; i < len; i++)
{
if (arr[i] == dup)
count++;
}
TEST_ASSERT_EQUAL(2, count);
free(arr);
}
void test_createNumbers_has_correct_value_range(void)
{
unsigned int len = 10;
unsigned int *arr = createNumbers(len);
TEST_ASSERT_NOT_NULL(arr);
// Check all numbers are within valid range (1 to 2*len)
for (unsigned int i = 0; i < len; i++)
{
TEST_ASSERT_TRUE(arr[i] >= 1);
TEST_ASSERT_TRUE(arr[i] <= 2 * len);
}
free(arr);
}
void test_getDuplicate_returns_correct_value(void)
{
unsigned int arr[6] = {4, 1, 7, 7, 3, 2};
unsigned int d = getDuplicate(arr, 6);
TEST_ASSERT_EQUAL_UINT(7, d);
}
void test_complete_function_of_numbers(void)
{
unsigned int len = 50;
unsigned int *arr = createNumbers(len);
TEST_ASSERT_NOT_NULL(arr);
unsigned int d1 = getDuplicate(arr, len);
TEST_ASSERT_NOT_EQUAL(0, d1);
int count = 0;
for (unsigned int i = 0; i < len; i++)
{
if (arr[i] == d1)
count++;
}
TEST_ASSERT_EQUAL(2, count);
free(arr);
}
int main(void)
{
UNITY_BEGIN();
RUN_TEST(test_createNumbers_no_null);
RUN_TEST(test_createNumbers_has_exactly_one_duplicate);
RUN_TEST(test_createNumbers_has_correct_value_range);
RUN_TEST(test_getDuplicate_returns_correct_value);
RUN_TEST(test_complete_function_of_numbers);
return UNITY_END();
}