diff --git a/icu4c/source/test/intltest/dtfmtrtts.cpp b/icu4c/source/test/intltest/dtfmtrtts.cpp index 21874aceb18..6d4b76da925 100644 --- a/icu4c/source/test/intltest/dtfmtrtts.cpp +++ b/icu4c/source/test/intltest/dtfmtrtts.cpp @@ -263,8 +263,10 @@ void DateFormatRoundTripTest::test(const Locale& loc) for(int32_t dstyle = DateFormat::FULL; dstyle <= DateFormat::SHORT; ++dstyle) { for(int32_t tstyle = DateFormat::FULL; tstyle <= DateFormat::SHORT; ++tstyle) { if(TEST_TABLE[itable++]) { - if (uprv_strcmp(loc.getLanguage(), "ccp")==0 && logKnownIssue("13366", "Skip ccp formats with zzzz,a until DateFormat parsing is fixed") && - (dstyle==DateFormat::SHORT && tstyle<= DateFormat::LONG || dstyle==DateFormat::MEDIUM && tstyle>= DateFormat::MEDIUM)) { + if (uprv_strcmp(loc.getLanguage(),"ccp")==0 && logKnownIssue("13366", "Skip handling ccp until DateFormat parsing is fixed")) { + continue; + } + if (uprv_strcmp(loc.getLanguage(),"fa")==0 && tstyle==DateFormat::FULL && logKnownIssue("13374", "Skip handling fa until TimeZone roundtrip is fixed")) { continue; } logln("Testing dstyle" + UnicodeString(styleName((DateFormat::EStyle)dstyle)) + ", tstyle" + UnicodeString(styleName((DateFormat::EStyle)tstyle)) ); diff --git a/icu4c/source/test/intltest/nmfmtrt.cpp b/icu4c/source/test/intltest/nmfmtrt.cpp index 33b4c0927a5..54226a54710 100644 --- a/icu4c/source/test/intltest/nmfmtrt.cpp +++ b/icu4c/source/test/intltest/nmfmtrt.cpp @@ -16,6 +16,7 @@ #include "unicode/decimfmt.h" #include "unicode/locid.h" #include "putilimp.h" +#include "cstring.h" #include #include // for sprintf @@ -122,6 +123,9 @@ NumberFormatRoundTripTest::start() logln("Quick mode: only testing first 5 Locales"); } for(int i = 0; i < locCount; ++i) { + if (uprv_strcmp(loc[i].getLanguage(),"ccp")==0 && logKnownIssue("13366", "Skip handling ccp until NumberFormat parsing is fixed")) { + continue; + } UnicodeString name; logln(loc[i].getDisplayName(name)); @@ -343,10 +347,13 @@ NumberFormatRoundTripTest::escape(UnicodeString& s) UnicodeString copy(s); s.remove(); for(int i = 0; i < copy.length(); ++i) { - UChar c = copy[i]; - if(c < 0x00FF) + UChar32 c = copy.char32At(i); + if (c >= 0x10000) { + ++i; + } + if(c < 0x00FF) { s += c; - else { + } else { s += "+U"; char temp[16]; sprintf(temp, "%4X", c); // might not work diff --git a/icu4c/source/test/intltest/tsdate.cpp b/icu4c/source/test/intltest/tsdate.cpp index 15d8a570b74..68806b8c2e5 100644 --- a/icu4c/source/test/intltest/tsdate.cpp +++ b/icu4c/source/test/intltest/tsdate.cpp @@ -13,6 +13,7 @@ #include "unicode/smpdtfmt.h" #include "tsdate.h" #include "putilimp.h" +#include "cstring.h" #include #include @@ -280,6 +281,9 @@ void IntlTestDateFormat::monsterTest(/*char *par*/) } for (int32_t i=0; i