ICU-12961 port NumberFormatTest.TestLocalizedPatternSymbolCoverage to C++

X-SVN-Rev: 41341
This commit is contained in:
Markus Scherer 2018-05-07 23:03:56 +00:00
parent 51f4b85f7c
commit 3f5950349a
2 changed files with 54 additions and 0 deletions

View file

@ -594,6 +594,7 @@ void NumberFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &n
TESTCASE_AUTO(TestCurrencyAmount);
TESTCASE_AUTO(TestCurrencyUnit);
TESTCASE_AUTO(TestCoverage);
TESTCASE_AUTO(TestLocalizedPatternSymbolCoverage);
TESTCASE_AUTO(TestJB3832);
TESTCASE_AUTO(TestHost);
TESTCASE_AUTO(TestHostClone);
@ -764,6 +765,58 @@ NumberFormatTest::TestCoverage(void){
};
}
void NumberFormatTest::TestLocalizedPatternSymbolCoverage() {
IcuTestErrorCode errorCode(*this, "TestLocalizedPatternSymbolCoverage");
// Ticket #12961: DecimalFormat::toLocalizedPattern() is not working as designed.
DecimalFormatSymbols dfs(errorCode);
dfs.setSymbol(DecimalFormatSymbols::kGroupingSeparatorSymbol, u'');
dfs.setSymbol(DecimalFormatSymbols::kDecimalSeparatorSymbol, u'');
dfs.setSymbol(DecimalFormatSymbols::kPatternSeparatorSymbol, u'');
dfs.setSymbol(DecimalFormatSymbols::kDigitSymbol, u'');
dfs.setSymbol(DecimalFormatSymbols::kZeroDigitSymbol, u'');
dfs.setSymbol(DecimalFormatSymbols::kSignificantDigitSymbol, u'');
dfs.setSymbol(DecimalFormatSymbols::kPlusSignSymbol, u'');
dfs.setSymbol(DecimalFormatSymbols::kMinusSignSymbol, u'');
dfs.setSymbol(DecimalFormatSymbols::kPercentSymbol, u'');
dfs.setSymbol(DecimalFormatSymbols::kPerMillSymbol, u'');
dfs.setSymbol(DecimalFormatSymbols::kExponentialSymbol, u"⁑⁑"); // tests multi-char sequence
dfs.setSymbol(DecimalFormatSymbols::kPadEscapeSymbol, u'');
{
UnicodeString standardPattern(u"#,##0.05+%;#,##0.05-%");
UnicodeString localizedPattern(u"▰⁖▰▰໐⁘໐໕†⁜⁙▰⁖▰▰໐⁘໐໕‡⁜");
DecimalFormat df1("#", new DecimalFormatSymbols(dfs), errorCode);
df1.applyPattern(standardPattern, errorCode);
DecimalFormat df2("#", new DecimalFormatSymbols(dfs), errorCode);
df2.applyLocalizedPattern(localizedPattern, errorCode);
assertTrue("DecimalFormat instances should be equal", df1 == df2);
UnicodeString p2;
assertEquals("toPattern should match on localizedPattern instance",
standardPattern, df2.toPattern(p2));
UnicodeString lp1;
assertEquals("toLocalizedPattern should match on standardPattern instance",
localizedPattern, df1.toLocalizedPattern(lp1));
}
{
UnicodeString standardPattern(u"* @@@E0‰");
UnicodeString localizedPattern(u"⁂ ⁕⁕⁕⁑⁑໐‱");
DecimalFormat df1("#", new DecimalFormatSymbols(dfs), errorCode);
df1.applyPattern(standardPattern, errorCode);
DecimalFormat df2("#", new DecimalFormatSymbols(dfs), errorCode);
df2.applyLocalizedPattern(localizedPattern, errorCode);
assertTrue("DecimalFormat instances should be equal", df1 == df2);
UnicodeString p2;
assertEquals("toPattern should match on localizedPattern instance",
standardPattern, df2.toPattern(p2));
UnicodeString lp1;
assertEquals("toLocalizedPattern should match on standardPattern instance",
localizedPattern, df1.toLocalizedPattern(lp1));
}
}
// Test various patterns
void
NumberFormatTest::TestPatterns(void)

View file

@ -45,6 +45,7 @@ class NumberFormatTest: public CalendarTimeZoneTest {
void TestAPI(void);
void TestCoverage(void);
void TestLocalizedPatternSymbolCoverage();
/**
* Test the handling of quotes