From 4a27d147348e6698563e8a692cdcb7f29e641fc2 Mon Sep 17 00:00:00 2001 From: jsalling Date: Sun, 6 Nov 2016 22:25:54 -0600 Subject: [PATCH] Correct boundary conditions and add tests --- src/unity.c | 6 +++--- test/tests/testunity.c | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/unity.c b/src/unity.c index ecc9559..c282873 100644 --- a/src/unity.c +++ b/src/unity.c @@ -281,8 +281,8 @@ void UnityPrintFloat(_UD number) if (isnan(number)) UnityPrint(UnityStrNaN); else if (isinf(number)) UnityPrintLen(UnityStrInf, 3); - else if (number < 0.0000005 && number > 0) UnityPrint("0.000000..."); /* Small numbers */ - else if (number < 4294967296.0f) /* Rounded result fits in 32 bits, "%.6f" format */ + else if (number <= 0.0000005 && number > 0) UnityPrint("0.000000..."); /* Small number */ + else if (number < 4294967295.9999995) /* Rounded result fits in 32 bits, "%.6f" format */ { const _US32 divisor = (1000000/10); _UU32 integer_part = (_UU32)number; @@ -305,7 +305,7 @@ void UnityPrintFloat(_UD number) double divide = 10.0; int exponent = 9; - while (number / divide >= 1000000000.0) + while (number / divide >= 1000000000.0 - 0.5) { divide *= 10; exponent++; diff --git a/test/tests/testunity.c b/test/tests/testunity.c index 76babfc..aa07dee 100644 --- a/test/tests/testunity.c +++ b/test/tests/testunity.c @@ -3272,7 +3272,9 @@ void testFloatVerbosePrinting(void) //Double TEST_ASSERT_EQUAL_PRINT_FLOATING("0.100469", 0.10046949999999999); TEST_ASSERT_EQUAL_PRINT_FLOATING("4294967295.999999", 4294967295.999999); + TEST_ASSERT_EQUAL_PRINT_FLOATING("4.2949673e+09", 4294967295.9999995); TEST_ASSERT_EQUAL_PRINT_FLOATING("4.2949673e+09", 4294967296.0); + TEST_ASSERT_EQUAL_PRINT_FLOATING("1.0e+10", 9999999995.0); TEST_ASSERT_EQUAL_PRINT_FLOATING("7.0e+100", 7.0e+100); TEST_ASSERT_EQUAL_PRINT_FLOATING("Inf", 1.7976931348623157e308*10.0);