ICU-10997 Port test case for 10997 currency formatting to icu4c
diff --git a/icu4c/source/test/intltest/numfmtst.cpp b/icu4c/source/test/intltest/numfmtst.cpp
index dc193f2..add630a 100644
--- a/icu4c/source/test/intltest/numfmtst.cpp
+++ b/icu4c/source/test/intltest/numfmtst.cpp
@@ -248,6 +248,7 @@
TESTCASE_AUTO(Test21134_ToNumberFormatter);
TESTCASE_AUTO(Test13733_StrictAndLenient);
TESTCASE_AUTO(Test21232_ParseTimeout);
+ TESTCASE_AUTO(Test10997_FormatCurrency);
TESTCASE_AUTO_END;
}
@@ -9183,7 +9184,7 @@
pFormat->format(2.155, actual);
assertEquals("Should round percent toward even number", "216%", actual);
}
-
+
void NumberFormatTest::Test11839() {
IcuTestErrorCode errorCode(*this, "Test11839");
// Ticket #11839: DecimalFormat does not respect custom plus sign
@@ -10063,4 +10064,27 @@
// Should not hang
}
+void NumberFormatTest::Test10997_FormatCurrency() {
+ IcuTestErrorCode status(*this, "Test10997_FormatCurrency");
+
+ UErrorCode error = U_ZERO_ERROR;
+ NumberFormat* fmt = NumberFormat::createCurrencyInstance(Locale::getUS(), error);
+ fmt->setMinimumFractionDigits(4);
+ fmt->setMaximumFractionDigits(4);
+
+ FieldPosition fp;
+
+ UnicodeString str;
+ Formattable usdAmnt(new CurrencyAmount(123.45, u"USD", status));
+ fmt->format(usdAmnt, str, fp, status);
+ assertEquals("minFrac 4 should be respected in default currency", u"$123.4500", str);
+
+ UnicodeString str2;
+ Formattable eurAmnt(new CurrencyAmount(123.45, u"EUR", status));
+ fmt->format(eurAmnt, str2, fp, status);
+ assertEquals("minFrac 4 should be respected in different currency", u"€123.4500", str2);
+
+ delete fmt;
+}
+
#endif /* #if !UCONFIG_NO_FORMATTING */
diff --git a/icu4c/source/test/intltest/numfmtst.h b/icu4c/source/test/intltest/numfmtst.h
index 24ca15a..c92067a 100644
--- a/icu4c/source/test/intltest/numfmtst.h
+++ b/icu4c/source/test/intltest/numfmtst.h
@@ -304,6 +304,7 @@
void Test21134_ToNumberFormatter();
void Test13733_StrictAndLenient();
void Test21232_ParseTimeout();
+ void Test10997_FormatCurrency();
private:
UBool testFormattableAsUFormattable(const char *file, int line, Formattable &f);