summaryrefslogtreecommitdiff
path: root/Build/source/libs/icu/icu-src/source/test/intltest/intltest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/icu/icu-src/source/test/intltest/intltest.cpp')
-rw-r--r--Build/source/libs/icu/icu-src/source/test/intltest/intltest.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/Build/source/libs/icu/icu-src/source/test/intltest/intltest.cpp b/Build/source/libs/icu/icu-src/source/test/intltest/intltest.cpp
index 7ff28961271..f2956ebcb48 100644
--- a/Build/source/libs/icu/icu-src/source/test/intltest/intltest.cpp
+++ b/Build/source/libs/icu/icu-src/source/test/intltest/intltest.cpp
@@ -2188,14 +2188,20 @@ UBool IntlTest::assertEqualsNear(const char* message,
double expected,
double actual,
double delta) {
+ bool bothNaN = std::isnan(expected) && std::isnan(actual);
+ bool bothPosInf = uprv_isPositiveInfinity(expected) && uprv_isPositiveInfinity(actual);
+ bool bothNegInf = uprv_isNegativeInfinity(expected) && uprv_isNegativeInfinity(actual);
+ if (bothPosInf || bothNegInf || bothNaN) {
+ // We don't care about delta in these cases
+ return TRUE;
+ }
if (std::isnan(delta) || std::isinf(delta)) {
errln((UnicodeString)("FAIL: ") + message + "; nonsensical delta " + delta +
- " - delta may not be NaN or Inf");
+ " - delta may not be NaN or Inf. (Got " + actual + "; expected " + expected + ".)");
return FALSE;
}
- bool bothNaN = std::isnan(expected) && std::isnan(actual);
double difference = std::abs(expected - actual);
- if (expected != actual && (difference > delta || std::isnan(difference)) && !bothNaN) {
+ if (expected != actual && (difference > delta || std::isnan(difference))) {
errln((UnicodeString)("FAIL: ") + message + "; got " + actual + "; expected " + expected +
"; acceptable delta " + delta);
return FALSE;