diff --git a/icu4c/source/test/intltest/intltest.cpp b/icu4c/source/test/intltest/intltest.cpp index b40d37feed2..f23f827ea6e 100644 --- a/icu4c/source/test/intltest/intltest.cpp +++ b/icu4c/source/test/intltest/intltest.cpp @@ -1931,6 +1931,24 @@ UBool IntlTest::assertEquals(const char* message, return TRUE; } +UBool IntlTest::assertEquals(const char* message, + double expected, + double actual) { + if (expected != actual) { + errln((UnicodeString)"FAIL: " + message + "; got " + + actual + + "; expected " + expected); + return FALSE; + } +#ifdef VERBOSE_ASSERTIONS + else { + logln((UnicodeString)"Ok: " + message + "; got " + actual); + } +#endif + return TRUE; +} + + UBool IntlTest::assertEquals(const char* message, UBool expected, UBool actual) { diff --git a/icu4c/source/test/intltest/intltest.h b/icu4c/source/test/intltest/intltest.h index 667685ec309..58877cf94d1 100644 --- a/icu4c/source/test/intltest/intltest.h +++ b/icu4c/source/test/intltest/intltest.h @@ -275,6 +275,7 @@ protected: UBool actual); UBool assertEquals(const char* message, int32_t expected, int32_t actual); UBool assertEquals(const char* message, int64_t expected, int64_t actual); + UBool assertEquals(const char* message, double expected, double actual); #if !UCONFIG_NO_FORMATTING UBool assertEquals(const char* message, const Formattable& expected, const Formattable& actual, UBool possibleDataError=FALSE); diff --git a/icu4c/source/test/intltest/numrgts.cpp b/icu4c/source/test/intltest/numrgts.cpp index 772bbe8bbf3..821a94f3418 100644 --- a/icu4c/source/test/intltest/numrgts.cpp +++ b/icu4c/source/test/intltest/numrgts.cpp @@ -1,5 +1,5 @@ /*********************************************************************** - * Copyright (c) 1997-2014, International Business Machines Corporation + * Copyright (c) 1997-2015, International Business Machines Corporation * and others. All Rights Reserved. ***********************************************************************/ @@ -2710,6 +2710,12 @@ void NumberFormatRegressionTest::TestJ691(void) { if ((expr)==FALSE) {\ errln("File %s, line %d: Assertion Failed: " #expr "\n", __FILE__, __LINE__);\ } +#define TEST_ASSERT_EQUALS(x,y) \ + { \ + char _msg[100]; \ + sprintf (_msg,"File %s, line %d: Assertion Failed: " #x "==" #y "\n", __FILE__, __LINE__); \ + assertEquals((const char*)_msg, x,y); \ + } // Ticket 8199: Parse failure for numbers in the range of 1E10 - 1E18 @@ -2827,8 +2833,8 @@ void NumberFormatRegressionTest::Test8199(void) { nf->parse(numStr, val, status); // the ones digit, putting it up to ...994 TEST_CHECK_STATUS(status); TEST_ASSERT(Formattable::kDouble == val.getType()); - TEST_ASSERT(9007199254740993LL == val.getInt64(status)); - TEST_ASSERT(9007199254740994.0 == val.getDouble(status)); + TEST_ASSERT_EQUALS((int64_t)9007199254740993LL,val.getInt64(status)); + TEST_ASSERT_EQUALS((double)9007199254740994.0,(double)val.getDouble(status)); TEST_CHECK_STATUS(status); delete nf;