X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/f3c0d7a59d99c2a94c6b8822291f0e42be3773c9..4f1e1a09ce4daed860e35d359ce2fceccb0764e8:/icuSources/test/intltest/intltest.cpp diff --git a/icuSources/test/intltest/intltest.cpp b/icuSources/test/intltest/intltest.cpp index ab5ce8c1..e85ba87f 100644 --- a/icuSources/test/intltest/intltest.cpp +++ b/icuSources/test/intltest/intltest.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include "unicode/ctest.h" // for str_timeDelta #include "unicode/curramt.h" @@ -29,6 +30,7 @@ #include "unicode/ucnv.h" #include "unicode/unistr.h" #include "unicode/ures.h" +#include "unicode/utf16.h" #include "intltest.h" @@ -108,6 +110,18 @@ Int64ToUnicodeString(int64_t num) return buffer; } +UnicodeString +DoubleToUnicodeString(double num) +{ + char buffer[64]; // nos changed from 10 to 64 + char danger = 'p'; // guard against overrunning the buffer (rtg) + + sprintf(buffer, "%1.14e", num); + assert(danger == 'p'); + + return buffer; +} + // [LIU] Just to get things working UnicodeString operator+(const UnicodeString& left, @@ -224,6 +238,12 @@ UnicodeString toString(UBool b) { return b ? UnicodeString("TRUE"):UnicodeString("FALSE"); } +UnicodeString toString(const UnicodeSet& uniset, UErrorCode& status) { + UnicodeString result; + uniset.toPattern(result, status); + return result; +} + // stephen - cleaned up 05/05/99 UnicodeString operator+(const UnicodeString& left, char num) { return left + (long)num; } @@ -696,10 +716,10 @@ UBool IntlTest::runTest( char* name, char* par, char *baseName ) return rval; } -// call individual tests, to be overriden to call implementations +// call individual tests, to be overridden to call implementations void IntlTest::runIndexedTest( int32_t /*index*/, UBool /*exec*/, const char* & /*name*/, char* /*par*/ ) { - // to be overriden by a method like: + // to be overridden by a method like: /* switch (index) { case 0: name = "First Test"; if (exec) FirstTest( par ); break; @@ -707,7 +727,7 @@ void IntlTest::runIndexedTest( int32_t /*index*/, UBool /*exec*/, const char* & default: name = ""; break; } */ - this->errln("*** runIndexedTest needs to be overriden! ***"); + this->errln("*** runIndexedTest needs to be overridden! ***"); } @@ -1095,7 +1115,7 @@ void IntlTest::LL_message( UnicodeString message, UBool newline ) { // Synchronize this function. // All error messages generated by tests funnel through here. - // Multithreaded tests can concurrently generate errors, requiring syncronization + // Multithreaded tests can concurrently generate errors, requiring synchronization // to keep each message together. Mutex lock(&messageMutex); @@ -1881,9 +1901,13 @@ UBool IntlTest::assertTrue(const char* message, UBool condition, UBool quiet, UB return condition; } -UBool IntlTest::assertFalse(const char* message, UBool condition, UBool quiet) { +UBool IntlTest::assertFalse(const char* message, UBool condition, UBool quiet, UBool possibleDataError) { if (condition) { - errln("FAIL: assertFalse() failed: %s", message); + if (possibleDataError) { + dataerrln("FAIL: assertTrue() failed: %s", message); + } else { + errln("FAIL: assertTrue() failed: %s", message); + } } else if (!quiet) { logln("Ok: %s", message); } @@ -1985,7 +2009,8 @@ UBool IntlTest::assertEquals(const char* message, UBool IntlTest::assertEquals(const char* message, double expected, double actual) { - if (expected != actual) { + bool bothNaN = std::isnan(expected) && std::isnan(actual); + if (expected != actual && !bothNaN) { errln((UnicodeString)"FAIL: " + message + "; got " + actual + "; expected " + expected); @@ -2017,6 +2042,43 @@ UBool IntlTest::assertEquals(const char* message, return TRUE; } + +UBool IntlTest::assertEquals(const char* message, + UErrorCode expected, + UErrorCode actual) { + if (expected != actual) { + errln((UnicodeString)"FAIL: " + message + "; got " + + u_errorName(actual) + + "; expected " + u_errorName(expected)); + return FALSE; + } +#ifdef VERBOSE_ASSERTIONS + else { + logln((UnicodeString)"Ok: " + message + "; got " + u_errorName(actual)); + } +#endif + return TRUE; +} + +UBool IntlTest::assertEquals(const char* message, + const UnicodeSet& expected, + const UnicodeSet& actual) { + IcuTestErrorCode status(*this, "assertEqualsUniSet"); + if (expected != actual) { + errln((UnicodeString)"FAIL: " + message + "; got " + + toString(actual, status) + + "; expected " + toString(expected, status)); + return FALSE; + } +#ifdef VERBOSE_ASSERTIONS + else { + logln((UnicodeString)"Ok: " + message + "; got " + toString(actual, status)); + } +#endif + return TRUE; +} + + #if !UCONFIG_NO_FORMATTING UBool IntlTest::assertEquals(const char* message, const Formattable& expected, @@ -2053,12 +2115,12 @@ static const char* extractToAssertBuf(const UnicodeString& message) { return ASSERT_BUF; } -UBool IntlTest::assertTrue(const UnicodeString& message, UBool condition, UBool quiet) { - return assertTrue(extractToAssertBuf(message), condition, quiet); +UBool IntlTest::assertTrue(const UnicodeString& message, UBool condition, UBool quiet, UBool possibleDataError) { + return assertTrue(extractToAssertBuf(message), condition, quiet, possibleDataError); } -UBool IntlTest::assertFalse(const UnicodeString& message, UBool condition, UBool quiet) { - return assertFalse(extractToAssertBuf(message), condition, quiet); +UBool IntlTest::assertFalse(const UnicodeString& message, UBool condition, UBool quiet, UBool possibleDataError) { + return assertFalse(extractToAssertBuf(message), condition, quiet, possibleDataError); } UBool IntlTest::assertSuccess(const UnicodeString& message, UErrorCode ec) { @@ -2092,6 +2154,21 @@ UBool IntlTest::assertEquals(const UnicodeString& message, int64_t actual) { return assertEquals(extractToAssertBuf(message), expected, actual); } +UBool IntlTest::assertEquals(const UnicodeString& message, + double expected, + double actual) { + return assertEquals(extractToAssertBuf(message), expected, actual); +} +UBool IntlTest::assertEquals(const UnicodeString& message, + UErrorCode expected, + UErrorCode actual) { + return assertEquals(extractToAssertBuf(message), expected, actual); +} +UBool IntlTest::assertEquals(const UnicodeString& message, + const UnicodeSet& expected, + const UnicodeSet& actual) { + return assertEquals(extractToAssertBuf(message), expected, actual); +} #if !UCONFIG_NO_FORMATTING UBool IntlTest::assertEquals(const UnicodeString& message,