]> granicus.if.org Git - icu/commitdiff
ICU-12753 Add PatternDecimalPoint() test.
authorAndy Heninger <andy.heninger@gmail.com>
Tue, 8 May 2018 00:14:27 +0000 (00:14 +0000)
committerAndy Heninger <andy.heninger@gmail.com>
Tue, 8 May 2018 00:14:27 +0000 (00:14 +0000)
X-SVN-Rev: 41350

icu4c/source/test/intltest/numfmtst.cpp
icu4c/source/test/intltest/numfmtst.h

index e020231affcd608a071728fe88edf6d938bee691..a6c18446380eea9ef282364321e66cdc25273e66 100644 (file)
@@ -677,6 +677,7 @@ void NumberFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &n
   TESTCASE_AUTO(Test11025_CurrencyPadding);
   TESTCASE_AUTO(Test11648_ExpDecFormatMalPattern);
   TESTCASE_AUTO(Test11649_DecFmtCurrencies);
+  TESTCASE_AUTO(Test12753_PatternDecimalPoint);
   TESTCASE_AUTO_END;
 }
 
@@ -9466,4 +9467,18 @@ void NumberFormatTest::Test11649_DecFmtCurrencies() {
   appendTo.remove();
   assertEquals("", "US dollars 12.34", fmt2.format(12.34, appendTo));
 }
+
+void NumberFormatTest::Test12753_PatternDecimalPoint() {
+    UErrorCode status = U_ZERO_ERROR;
+    DecimalFormatSymbols symbols(Locale::getUS(), status);
+    symbols.setSymbol(DecimalFormatSymbols::kDecimalSeparatorSymbol, u"*", false);
+    DecimalFormat df(u"0.00", symbols, status);
+    if (!assertSuccess("", status)) return;
+    df.setDecimalPatternMatchRequired(true);
+    Formattable result;
+    df.parse(u"123",result, status);
+    assertEquals("Parsing integer succeeded even though setDecimalPatternMatchRequired was set",
+                 U_INVALID_FORMAT_ERROR, status);
+    }
+
 #endif /* #if !UCONFIG_NO_FORMATTING */
index 03592dc00169998f711880dd90bb6ab60bfc24df..ffc942808620092b5cbc00efe274c128f6e6b3da 100644 (file)
@@ -241,6 +241,7 @@ class NumberFormatTest: public CalendarTimeZoneTest {
     void Test11025_CurrencyPadding();
     void Test11648_ExpDecFormatMalPattern();
     void Test11649_DecFmtCurrencies();
+    void Test12753_PatternDecimalPoint();
 
  private:
     UBool testFormattableAsUFormattable(const char *file, int line, Formattable &f);