#include #include #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(); }