diff --git a/src/unity.c b/src/unity.c index 0219b37268ccf089241ec94cccaee88b6865f1d0..3787591ef2d0ca685f95cfff0c3f11db4f4075bd 100644 --- a/src/unity.c +++ b/src/unity.c @@ -578,7 +578,8 @@ void UnityAssertFloatsWithin(const _UF delta, pos_delta = 0.0f - pos_delta; } - if (pos_delta < diff) + // NOTE: This comparrison is deliberately this way round so that NaNs fail. + if ( ! (pos_delta >= diff) ) { UnityTestResultsFailBegin(lineNumber); #ifdef UNITY_FLOAT_VERBOSE diff --git a/test/testunity.c b/test/testunity.c index e98ca8f9df93e83d4ccc67ad368bcbfae1a1db33..ddd80c52ab7bc79f41a91ab32694642cde44c8c8 100755 --- a/test/testunity.c +++ b/test/testunity.c @@ -2226,6 +2226,17 @@ void testFloatsNotEqualNegative2(void) #endif } +void testFloatsNotEqualActualNaN(void) +{ +#ifdef UNITY_EXCLUDE_FLOAT + TEST_IGNORE(); +#else + EXPECT_ABORT_BEGIN + TEST_ASSERT_EQUAL_FLOAT(85.963f, 0.0f / 0.0f); + VERIFY_FAILS_END +#endif +} + void testEqualFloatArrays(void) { #ifdef UNITY_EXCLUDE_FLOAT