A3_DobleSpiel/numbersTests.c
DESKTOP-0TGNH6T\alial ccd912be91 bintree and tests
2026-06-08 16:45:03 +02:00

85 lines
2.0 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include "unity.h"
#include "numbers.h"
void test_getDuplicateReturnsDuplicateFromUnsortedArray(void)
{
unsigned int numbers[] = {8, 3, 12, 5, 3, 20};
TEST_ASSERT_EQUAL_UINT32(3, getDuplicate(numbers, 6));
}
void test_getDuplicateReturnsZeroForNullArray(void)
{
TEST_ASSERT_EQUAL_UINT32(0, getDuplicate(NULL, 5));
}
void test_getDuplicateReturnsZeroIfThereIsNoDuplicate(void)
{
unsigned int numbers[] = {1, 2, 3, 4, 5};
TEST_ASSERT_EQUAL_UINT32(0, getDuplicate(numbers, 5));
}
void test_getDuplicateDoesNotChangeOriginalArrayOrder(void)
{
unsigned int numbers[] = {9, 4, 7, 4, 2};
unsigned int expectedNumbers[] = {9, 4, 7, 4, 2};
TEST_ASSERT_EQUAL_UINT32(4, getDuplicate(numbers, 5));
TEST_ASSERT_EQUAL_UINT32_ARRAY(expectedNumbers, numbers, 5);
}
void test_createNumbersReturnsArrayWithCorrectDuplicate(void)
{
const unsigned int len = 20;
unsigned int *numbers = createNumbers(len);
unsigned int duplicate = 0;
unsigned int duplicateCount = 0;
TEST_ASSERT_NOT_NULL(numbers);
duplicate = getDuplicate(numbers, len);
TEST_ASSERT_NOT_EQUAL(0, duplicate);
for (unsigned int i = 0; i < len; i++)
{
if (numbers[i] == duplicate)
{
duplicateCount++;
}
}
TEST_ASSERT_EQUAL_UINT32(2, duplicateCount);
free(numbers);
}
void test_createNumbersReturnsNullForTooSmallLength(void)
{
TEST_ASSERT_NULL(createNumbers(1));
}
void setUp(void)
{
}
void tearDown(void)
{
}
int main(void)
{
UNITY_BEGIN();
printf("\n============================\nNumbers tests\n============================\n");
RUN_TEST(test_getDuplicateReturnsDuplicateFromUnsortedArray);
RUN_TEST(test_getDuplicateReturnsZeroForNullArray);
RUN_TEST(test_getDuplicateReturnsZeroIfThereIsNoDuplicate);
RUN_TEST(test_getDuplicateDoesNotChangeOriginalArrayOrder);
RUN_TEST(test_createNumbersReturnsArrayWithCorrectDuplicate);
RUN_TEST(test_createNumbersReturnsNullForTooSmallLength);
return UNITY_END();
}