From cc5fca27448d65ab88159fb70747667c29842be2 Mon Sep 17 00:00:00 2001 From: Shane Carr Date: Mon, 7 May 2018 22:37:02 +0000 Subject: [PATCH] ICU-13035 Adding test to ICU4C for padding code point. X-SVN-Rev: 41339 --- icu4c/source/i18n/number_padding.cpp | 1 + icu4c/source/test/intltest/numfmtst.cpp | 16 ++++++++++++++++ icu4c/source/test/intltest/numfmtst.h | 1 + 3 files changed, 18 insertions(+) diff --git a/icu4c/source/i18n/number_padding.cpp b/icu4c/source/i18n/number_padding.cpp index f6abf9bd80e..97e7b6014f9 100644 --- a/icu4c/source/i18n/number_padding.cpp +++ b/icu4c/source/i18n/number_padding.cpp @@ -29,6 +29,7 @@ addPaddingHelper(UChar32 paddingCp, int32_t requiredPadding, NumberStringBuilder } Padder::Padder(UChar32 cp, int32_t width, UNumberFormatPadPosition position) : fWidth(width) { + // TODO(13034): Consider making this a string instead of code point. fUnion.padding.fCp = cp; fUnion.padding.fPosition = position; } diff --git a/icu4c/source/test/intltest/numfmtst.cpp b/icu4c/source/test/intltest/numfmtst.cpp index 0f2554ef5bf..243fc12d7b3 100644 --- a/icu4c/source/test/intltest/numfmtst.cpp +++ b/icu4c/source/test/intltest/numfmtst.cpp @@ -648,6 +648,7 @@ void NumberFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &n TESTCASE_AUTO(TestFormatCurrencyPlural); TESTCASE_AUTO(Test11868); TESTCASE_AUTO(Test11739_ParseLongCurrency); + TESTCASE_AUTO(Test13035_MultiCodePointPaddingInPattern); TESTCASE_AUTO(Test10727_RoundingZero); TESTCASE_AUTO(Test11376_getAndSetPositivePrefix); TESTCASE_AUTO(Test11475_signRecognition); @@ -8763,6 +8764,21 @@ void NumberFormatTest::Test11739_ParseLongCurrency() { assertEquals("Should parse to 1500 USD", u"USD", result->getISOCurrency()); } +void NumberFormatTest::Test13035_MultiCodePointPaddingInPattern() { + IcuTestErrorCode status(*this, "Test13035_MultiCodePointPaddingInPattern"); + DecimalFormat df(u"a*'நி'###0b", status); + UnicodeString result; + df.format(12, result.remove()); + // TODO(13034): Re-enable this test when support is added in ICU4C. + //assertEquals("Multi-codepoint padding should not be split", u"aநிநி12b", result); + df = DecimalFormat(u"a*\U0001F601###0b", status); + result = df.format(12, result.remove()); + assertEquals("Single-codepoint padding should not be split", u"a\U0001F601\U0001F60112b", result); + df = DecimalFormat(u"a*''###0b", status); + result = df.format(12, result.remove()); + assertEquals("Quote should be escapable in padding syntax", "a''12b", result); +} + void NumberFormatTest::Test11376_getAndSetPositivePrefix() { { const UChar USD[] = {0x55, 0x53, 0x44, 0x0}; diff --git a/icu4c/source/test/intltest/numfmtst.h b/icu4c/source/test/intltest/numfmtst.h index 5a9832285d4..5090eef3a9e 100644 --- a/icu4c/source/test/intltest/numfmtst.h +++ b/icu4c/source/test/intltest/numfmtst.h @@ -212,6 +212,7 @@ class NumberFormatTest: public CalendarTimeZoneTest { void TestFormatCurrencyPlural(); void Test11868(); void Test11739_ParseLongCurrency(); + void Test13035_MultiCodePointPaddingInPattern(); void Test10727_RoundingZero(); void Test11376_getAndSetPositivePrefix(); void Test11475_signRecognition(); -- 2.40.0