diff --git a/icu4c/source/test/intltest/numbertest_api.cpp b/icu4c/source/test/intltest/numbertest_api.cpp index 63514043eeb..1f5cfaa3ff5 100644 --- a/icu4c/source/test/intltest/numbertest_api.cpp +++ b/icu4c/source/test/intltest/numbertest_api.cpp @@ -1254,7 +1254,22 @@ void NumberFormatterApiTest::symbols() { 12345.67, u"١٢٬٣٤٥٫٦٧ US$"); + assertFormatSingle( + u"NumberingSystem in API should win over @numbers keyword", + NumberFormatter::with().adoptSymbols(new NumberingSystem(LATN)).unit(USD), + Locale("ar@numbers=arab"), + 12345.67, + u"US$ 12,345.67"); + UErrorCode status = U_ZERO_ERROR; + assertEquals("NumberingSystem in API should win over @numbers keyword in reverse order", + u"US$ 12,345.67", + NumberFormatter::withLocale(Locale("ar@numbers=arab")) + .adoptSymbols(new NumberingSystem(LATN)) + .unit(USD) + .formatDouble(12345.67, status) + .toString()); + DecimalFormatSymbols symbols = SWISS_SYMBOLS; UnlocalizedNumberFormatter f = NumberFormatter::with().symbols(symbols); symbols.setSymbol(DecimalFormatSymbols::ENumberFormatSymbol::kGroupingSeparatorSymbol, u"!", status); diff --git a/icu4c/source/test/intltest/numfmtst.cpp b/icu4c/source/test/intltest/numfmtst.cpp index fc562f385ac..bfa714d228f 100644 --- a/icu4c/source/test/intltest/numfmtst.cpp +++ b/icu4c/source/test/intltest/numfmtst.cpp @@ -4063,6 +4063,8 @@ for (;;) { UnicodeString strBuf; numFmt->format(numberToBeFormat, strBuf); + // TODO: Re-enable the following test block. It has been disabled since + // the code was first checked-in (r25497) /* int resultDataIndex = 3 + kIndex; // DATA[i][resultDataIndex] is the currency format result diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberFormatterApiTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberFormatterApiTest.java index cb843a80aac..835a5fa320a 100644 --- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberFormatterApiTest.java +++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/number/NumberFormatterApiTest.java @@ -1324,6 +1324,22 @@ public class NumberFormatterApiTest { 12345.67, "١٢٬٣٤٥٫٦٧ US$"); + assertFormatSingle( + "NumberingSystem in API should win over @numbers keyword", + "", + NumberFormatter.with().symbols(NumberingSystem.LATIN).unit(USD), + new ULocale("ar@numbers=arab"), + 12345.67, + "US$ 12,345.67"); + + assertEquals("NumberingSystem in API should win over @numbers keyword in reverse order", + "US$ 12,345.67", + NumberFormatter.withLocale(new ULocale("ar@numbers=arab")) + .symbols(NumberingSystem.LATIN) + .unit(USD) + .format(12345.67) + .toString()); + DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(new ULocale("de-CH")); UnlocalizedNumberFormatter f = NumberFormatter.with().symbols(symbols); symbols.setGroupingSeparatorString("!");