]> git.saurik.com Git - apple/icu.git/commitdiff
ICU-64260.0.1.tar.gz macos-10154 macos-10155 macos-10156 v64260.0.1
authorApple <opensource@apple.com>
Fri, 1 May 2020 18:26:33 +0000 (18:26 +0000)
committerApple <opensource@apple.com>
Fri, 1 May 2020 18:26:33 +0000 (18:26 +0000)
25 files changed:
icuSources/data/locales/es_US.txt
icuSources/data/region/ca.txt
icuSources/data/region/cs.txt
icuSources/data/region/da.txt
icuSources/data/region/de.txt
icuSources/data/region/es.txt
icuSources/data/region/es_419.txt
icuSources/data/region/fi.txt
icuSources/data/region/hr.txt
icuSources/data/region/hu.txt
icuSources/data/region/id.txt
icuSources/data/region/it.txt
icuSources/data/region/ms.txt
icuSources/data/region/nb.txt
icuSources/data/region/nl.txt
icuSources/data/region/nn.txt
icuSources/data/region/pt.txt
icuSources/data/region/pt_PT.txt
icuSources/data/region/sk.txt
icuSources/data/region/sv.txt
icuSources/data/region/tr.txt
icuSources/i18n/number_formatimpl.cpp
icuSources/i18n/number_mapper.cpp
icuSources/test/cintltst/cnumtst.c
icuSources/test/intltest/numbertest_api.cpp

index fc0a1a5a5d1cdbccc0829dfc9ca9e645f98a4c0c..9897bbcfa1866bbd76bcd27ab933a8045ce9c528 100644 (file)
@@ -5,6 +5,9 @@ es_US{
     MoreInformation{"[...]"}
     NumberElements{
         latn{
+            patterns{
+                percentFormat{"#,##0%"}
+            }
             patternsLong{
                 decimalFormat{
                     1000000000{
index fca03be7b5e35d56027e1d1cb613a9ac6f4b4c07..e67b552550b3fa298d4a57f61b849c969bb84bed 100644 (file)
@@ -77,7 +77,7 @@ ca{
         CF{"República Centreafricana"}
         CG{"Congo - Brazzaville"}
         CH{"Suïssa"}
-        CI{"Costa d’Ivori"}
+        CI{"Côte d’Ivoire"}
         CK{"Illes Cook"}
         CL{"Xile"}
         CM{"Camerun"}
@@ -306,6 +306,7 @@ ca{
     Countries%variant{
         CD{"Congo (República Democràtica del Congo)"}
         CG{"Congo (República del Congo)"}
+        CI{"Costa d’Ivori"}
         CZ{"República Txeca"}
         FK{"Illes Malvines (Illes Falkland)"}
         SZ{"Swazilàndia"}
index aa37dc7ce20c2fd86f6b21f135b76481541c4300..f6945b4fcee624e104a8f93bf465cd5737a90400 100644 (file)
@@ -77,7 +77,7 @@ cs{
         CF{"Středoafrická republika"}
         CG{"Kongo – Brazzaville"}
         CH{"Švýcarsko"}
-        CI{"Pobřeží slonoviny"}
+        CI{"Côte d’Ivoire"}
         CK{"Cookovy ostrovy"}
         CL{"Chile"}
         CM{"Kamerun"}
@@ -306,7 +306,7 @@ cs{
     Countries%variant{
         CD{"Kongo (DRK)"}
         CG{"Kongo (republika)"}
-        CI{"Côte d’Ivoire"}
+        CI{"Pobřeží slonoviny"}
         CZ{"Česká republika"}
         FK{"Falklandské ostrovy (Malvíny)"}
     }
index 376e47722d69715c52e08647e103e8eea62896fd..e186afb614ba7d469e903bac67ed943e4e734334 100644 (file)
@@ -77,7 +77,7 @@ da{
         CF{"Den Centralafrikanske Republik"}
         CG{"Congo-Brazzaville"}
         CH{"Schweiz"}
-        CI{"Elfenbenskysten"}
+        CI{"Côte d’Ivoire"}
         CK{"Cookøerne"}
         CL{"Chile"}
         CM{"Cameroun"}
@@ -304,6 +304,7 @@ da{
     Countries%variant{
         CD{"Den Demokratiske Republik Congo (DRC)"}
         CG{"Republikken Congo"}
+        CI{"Elfenbenskysten"}
         CZ{"Den Tjekkiske Republik"}
         FK{"Falklandsøerne (Islas Malvinas)"}
         SZ{"Swaziland"}
index f8d2b4cae77eb610435ba51064f83c16286f3c4f..5fe60e71be481056404fbc1b8666360d917e5343 100644 (file)
@@ -77,7 +77,7 @@ de{
         CF{"Zentralafrikanische Republik"}
         CG{"Kongo-Brazzaville"}
         CH{"Schweiz"}
-        CI{"Elfenbeinküste"}
+        CI{"Côte d’Ivoire"}
         CK{"Cookinseln"}
         CL{"Chile"}
         CM{"Kamerun"}
index ce822fdb163894e6420b5434e284f96bab08acb3..648899661c465a6a82aa5e415cbe880d1e3304e8 100644 (file)
@@ -77,7 +77,7 @@ es{
         CF{"República Centroafricana"}
         CG{"Congo"}
         CH{"Suiza"}
-        CI{"Costa de Marfil"}
+        CI{"Côte d’Ivoire"}
         CK{"Islas Cook"}
         CL{"Chile"}
         CM{"Camerún"}
@@ -303,7 +303,7 @@ es{
     Countries%variant{
         CD{"Congo (RDC)"}
         CG{"Congo (República)"}
-        CI{"Côte d’Ivoire"}
+        CI{"Costa de Marfil"}
         CZ{"República Checa"}
         FK{"Islas Malvinas (Islas Falkland)"}
         SZ{"Suazilandia"}
index ba652fa801716d32de311fba7d0a14d75562ea5b..348816ff211b6a2f75b6dde6e170b6b49d88dd83 100644 (file)
@@ -18,7 +18,6 @@ es_419{
         AC{"Isla Ascensión"}
         BA{"Bosnia-Herzegovina"}
         CG{"República del Congo"}
-        CI{"Costa de Marfil"}
         EZ{"Eurozona"}
         GG{"Guernesey"}
         HK{"Hong-Kong"}
index 83a3d6cebd200c133307377cfbed8ca15f7c01b8..22f620c6080d45b26c1831d3907e4068d4dc088f 100644 (file)
@@ -77,7 +77,7 @@ fi{
         CF{"Keski-Afrikan tasavalta"}
         CG{"Kongon tasavalta"}
         CH{"Sveitsi"}
-        CI{"Norsunluurannikko"}
+        CI{"Côte d’Ivoire"}
         CK{"Cookinsaaret"}
         CL{"Chile"}
         CM{"Kamerun"}
@@ -304,7 +304,7 @@ fi{
     Countries%variant{
         CD{"Kongo-Kinshasa"}
         CG{"Kongo-Brazzaville"}
-        CI{"Côte d’Ivoire"}
+        CI{"Norsunluurannikko"}
         CZ{"Tšekinmaa"}
         FK{"Falklandinsaaret (Malvinassaaret)"}
         TL{"Timor-Leste"}
index 5cd70e54052b5d2f5372686d1b831851a73d73af..e016483a3aa3430e8251bd3a2997a006dd5ffbf7 100644 (file)
@@ -77,7 +77,7 @@ hr{
         CF{"Srednjoafrička Republika"}
         CG{"Kongo - Brazzaville"}
         CH{"Švicarska"}
-        CI{"Obala Bjelokosti"}
+        CI{"Côte d’Ivoire"}
         CK{"Cookovi Otoci"}
         CL{"Čile"}
         CM{"Kamerun"}
@@ -306,7 +306,7 @@ hr{
     Countries%variant{
         CD{"Kongo (DRK)"}
         CG{"Kongo (RK)"}
-        CI{"Bjelokosna Obala"}
+        CI{"Obala Bjelokosti"}
         CZ{"Češka Republika"}
         FK{"Falklandski otoci (Malvini)"}
         TL{"Istočni Timor"}
index f13eac3c3ca23b17d2140851863bad3e56675ab7..7bd33ea2489a6f09da170b8c59d7d239fa35ddc3 100644 (file)
@@ -77,7 +77,7 @@ hu{
         CF{"Közép-afrikai Köztársaság"}
         CG{"Kongó - Brazzaville"}
         CH{"Svájc"}
-        CI{"Elefántcsontpart"}
+        CI{"Côte d’Ivoire"}
         CK{"Cook-szigetek"}
         CL{"Chile"}
         CM{"Kamerun"}
@@ -306,7 +306,7 @@ hu{
     Countries%variant{
         CD{"Kongó (KDK)"}
         CG{"Kongó (Köztársaság)"}
-        CI{"CI"}
+        CI{"Elefántcsontpart"}
         CZ{"Cseh Köztársaság"}
         FK{"Falkland-szigetek (Malvin-szigetek)"}
         TL{"Timor-Leste"}
index cc1a47c80867fb1ed075b9d3a362c58eca3ba5f0..61413053d9725e6f04b9cdaec1c80719e35d225b 100644 (file)
@@ -77,7 +77,7 @@ id{
         CF{"Republik Afrika Tengah"}
         CG{"Kongo - Brazzaville"}
         CH{"Swiss"}
-        CI{"Pantai Gading"}
+        CI{"Côte d’Ivoire"}
         CK{"Kepulauan Cook"}
         CL{"Cile"}
         CM{"Kamerun"}
@@ -306,7 +306,7 @@ id{
     Countries%variant{
         CD{"Kongo (RDK)"}
         CG{"Kongo (Republik)"}
-        CI{"Pantai Gading (Ivory Coast)"}
+        CI{"Pantai Gading"}
         CZ{"Republik Ceko"}
         FK{"Kepulauan Malvinas (Falkland)"}
         SZ{"Swaziland"}
index ee39d46552553fbe029937be2afd061cbbe3159c..05d244fcf8637958e2d86840dbbfd60bf581a15b 100644 (file)
@@ -77,7 +77,7 @@ it{
         CF{"Repubblica Centrafricana"}
         CG{"Congo-Brazzaville"}
         CH{"Svizzera"}
-        CI{"Costa d’Avorio"}
+        CI{"Côte d’Ivoire"}
         CK{"Isole Cook"}
         CL{"Cile"}
         CM{"Camerun"}
@@ -306,7 +306,7 @@ it{
     Countries%variant{
         CD{"Congo (RDC)"}
         CG{"Congo (Repubblica)"}
-        CI{"Côte d’Ivoire"}
+        CI{"Costa d’Avorio"}
         CZ{"Repubblica Ceca"}
         FK{"Isole Falkland (Isole Malvine)"}
         SZ{"Regno di eSwatini"}
index 53702fc1470020cb6cc513ba7c9a2d8c131b90f1..baa5c4ea691e218e8ac3eda4bf5aa0cdc03a18a5 100644 (file)
@@ -77,7 +77,7 @@ ms{
         CF{"Republik Afrika Tengah"}
         CG{"Congo - Brazzaville"}
         CH{"Switzerland"}
-        CI{"Cote d’Ivoire"}
+        CI{"Côte d’Ivoire"}
         CK{"Kepulauan Cook"}
         CL{"Chile"}
         CM{"Cameroon"}
index 8a8ec47085c1b79c70cb4a94ee94da19a6082f97..3c806aa678667a253240e1d990cb7dd664486b63 100644 (file)
@@ -77,7 +77,7 @@ nb{
         CF{"Den sentralafrikanske republikk"}
         CG{"Kongo-Brazzaville"}
         CH{"Sveits"}
-        CI{"Elfenbenskysten"}
+        CI{"Côte d’Ivoire"}
         CK{"Cookøyene"}
         CL{"Chile"}
         CM{"Kamerun"}
@@ -304,6 +304,7 @@ nb{
     Countries%variant{
         CD{"Den demokratiske republikken Kongo"}
         CG{"Republikken Kongo"}
+        CI{"Elfenbenskysten"}
         CZ{"Den tsjekkiske republikk"}
         FK{"Falklandsøyene (Islas Malvinas)"}
         SZ{"Swaziland"}
index 85df9ca80924ca7ecee9d3f9760001db31142722..fdff035f3d64ecd045a5e7af4372bb93d4f67117 100644 (file)
@@ -77,7 +77,7 @@ nl{
         CF{"Centraal-Afrikaanse Republiek"}
         CG{"Congo-Brazzaville"}
         CH{"Zwitserland"}
-        CI{"Ivoorkust"}
+        CI{"Côte d’Ivoire"}
         CK{"Cookeilanden"}
         CL{"Chili"}
         CM{"Kameroen"}
index f2b2e2a6ecb4ee914f9f861e9694cfa98288bd51..2ffaeeaec0af649d75dabdbdc6c6aaaeb2049591 100644 (file)
@@ -76,7 +76,7 @@ nn{
         CF{"Den sentralafrikanske republikken"}
         CG{"Kongo-Brazzaville"}
         CH{"Sveits"}
-        CI{"Elfenbeinskysten"}
+        CI{"Côte d’Ivoire"}
         CK{"Cookøyane"}
         CL{"Chile"}
         CM{"Kamerun"}
@@ -302,6 +302,7 @@ nn{
     Countries%variant{
         CD{"Den demokratiske republikken Kongo"}
         CG{"Republikken Kongo"}
+        CI{"Elfenbeinskysten"}
         FK{"Falklandsøyane (Islas Malvinas)"}
         TL{"Aust-Timor"}
     }
index 8c5adf57854256c0abb8019110e2d1b6e81cbbf0..8f7dda8194232f7c16cd4d07768f19af549fe124 100644 (file)
@@ -77,7 +77,7 @@ pt{
         CF{"República Centro-Africana"}
         CG{"República do Congo"}
         CH{"Suíça"}
-        CI{"Costa do Marfim"}
+        CI{"Côte d’Ivoire"}
         CK{"Ilhas Cook"}
         CL{"Chile"}
         CM{"Camarões"}
@@ -306,7 +306,7 @@ pt{
     Countries%variant{
         CD{"República Democrática do Congo"}
         CG{"Congo"}
-        CI{"Côte d’Ivoire"}
+        CI{"Costa do Marfim"}
         CZ{"República Tcheca"}
         FK{"Ilhas Falkland (Ilhas Malvinas)"}
         TL{"República Democrática de Timor-Leste"}
index 54e7cbcfee166c983e493e94149e983f8dc6834c..a9487647565d5d218ca2a2d6137f9d48df3d356a 100644 (file)
@@ -19,7 +19,6 @@ pt_PT{
         CC{"Ilhas dos Cocos (Keeling)"}
         CD{"Congo-Kinshasa"}
         CG{"Congo-Brazzaville"}
-        CI{"Côte d’Ivoire (Costa do Marfim)"}
         CW{"Curaçau"}
         CX{"Ilha do Natal"}
         CZ{"Chéquia"}
@@ -78,7 +77,6 @@ pt_PT{
     }
     Countries%variant{
         CG{"República do Congo"}
-        CI{"Costa do Marfim"}
         CZ{"República Checa"}
         FK{"Ilhas Falkland (Malvinas)"}
     }
index efbdfad1742a557349ec2ffdcd4eeb69c915b4fe..1077bbf8379ab19a2ba1acc2fc7884e5aa0e691f 100644 (file)
@@ -77,7 +77,7 @@ sk{
         CF{"Stredoafrická republika"}
         CG{"Konžská republika"}
         CH{"Švajčiarsko"}
-        CI{"Pobrežie Slonoviny"}
+        CI{"Côte d’Ivoire"}
         CK{"Cookove ostrovy"}
         CL{"Čile"}
         CM{"Kamerun"}
@@ -302,6 +302,7 @@ sk{
         US{"USA"}
     }
     Countries%variant{
+        CI{"Pobrežie Slonoviny"}
         CZ{"Česká republika"}
         FK{"Falklandy (Malvíny)"}
     }
index 764ab8e5b0fd62fc86d6a47cdc48a5e3eb78b5d9..70ba309b7a798b871eebfd0051e90a4cf7112289 100644 (file)
@@ -77,7 +77,7 @@ sv{
         CF{"Centralafrikanska republiken"}
         CG{"Kongo-Brazzaville"}
         CH{"Schweiz"}
-        CI{"Elfenbenskusten"}
+        CI{"Côte d’Ivoire"}
         CK{"Cooköarna"}
         CL{"Chile"}
         CM{"Kamerun"}
@@ -306,7 +306,7 @@ sv{
     Countries%variant{
         CD{"Demokratiska republiken Kongo"}
         CG{"Republiken Kongo"}
-        CI{"Côte d’Ivoire"}
+        CI{"Elfenbenskusten"}
         TL{"Timor-Leste"}
     }
     Version{"2.1.48.90"}
index 7480e71584f85ec26640c61f771493ea0861e51c..b4d9add57feacd4e093eb69fa195a52b2696da4f 100644 (file)
@@ -77,7 +77,7 @@ tr{
         CF{"Orta Afrika Cumhuriyeti"}
         CG{"Kongo - Brazavil"}
         CH{"İsviçre"}
-        CI{"Fildişi Sahili"}
+        CI{"Côte d’Ivoire"}
         CK{"Cook Adaları"}
         CL{"Şili"}
         CM{"Kamerun"}
@@ -304,6 +304,7 @@ tr{
     Countries%variant{
         CD{"Kongo Demokratik Cumhuriyeti"}
         CG{"Kongo Cumhuriyeti"}
+        CI{"Fildişi Sahili"}
         CZ{"Çek Cumhuriyeti"}
         FK{"Falkland Adaları (Malvinas Adaları)"}
         SZ{"Svaziland"}
index b036b6ef932e0bebaca5d7a97b0a27ece71a5ae7..4ae75e185720041a0ea6ed02d26b20a5e8fbed41 100644 (file)
@@ -492,6 +492,12 @@ int32_t NumberFormatterImpl::writeNumber(const MicroProps& micros, DecimalQuanti
 
         // Add the fraction digits
         length += writeFractionDigits(micros, quantity, string, length + index, status);
+
+        if (length == 0) {
+            // Force output of the digit for value 0
+            length += utils::insertDigitFromSymbols(
+                    string, index, 0, *micros.symbols, UNUM_INTEGER_FIELD, status);
+        }
     }
 
     return length;
index 478674904a0b9ff1e39db0f607a76e04f6a6e6bd..c66be526696828f3123ab5c4b9212ed13ea9bf93 100644 (file)
@@ -126,11 +126,8 @@ MacroProps NumberPropertyMapper::oldToNew(const DecimalFormatProperties& propert
     }
     // Validate min/max int/frac.
     // For backwards compatibility, minimum overrides maximum if the two conflict.
-    // The following logic ensures that there is always a minimum of at least one digit.
-    // Except that we allow minInt=0, minFrac=0 if maxInt!=0 - rdar://54569257
     if (minInt == 0 && maxFrac != 0) {
-        // Force a digit after the decimal point.
-        minFrac = (minFrac < 0 || (minFrac==0 && maxInt==0)) ? 1 : minFrac; // rdar://54569257
+        minFrac = (minFrac < 0 || (minFrac == 0 && maxInt == 0)) ? 1 : minFrac; // rdar://54569257
         maxFrac = maxFrac < 0 ? -1 : maxFrac < minFrac ? minFrac : maxFrac;
         minInt = 0;
         maxInt = maxInt < 0 ? -1 : maxInt > kMaxIntFracSig ? -1 : maxInt;
index cbf090ede4a852461032a4da3ede0167a1fbd97a..773d626ad66e026c884bbfc506ce448ec8d67ef5 100644 (file)
@@ -3202,7 +3202,7 @@ static const FieldsData fields_en_CURR[] = {
     { UNUM_FRACTION_FIELD /*1*/,            9, 11 },
     { -1, -1, -1 },
 };
-/* "en_US", UNUM_PERCENT, -34 : "#,##0%" => "-34%" */
+/* "en_US"/"es_US/MX" , UNUM_PERCENT, -34 : "#,##0%" => "-34%" */
 static const FieldsData fields_en_PRCT[] = {
     { UNUM_SIGN_FIELD /*10*/,               0, 1 },
     { UNUM_INTEGER_FIELD /*0*/,             1, 3 },
@@ -3227,6 +3227,8 @@ static const FieldsData fields_en_PATN[] = {
 static const FormatForFieldsItem fffItems[] = {
     { "en_US", UNUM_CURRENCY_STANDARD, 123456.0, fields_en_CURR },
     { "en_US", UNUM_PERCENT,              -0.34, fields_en_PRCT },
+    { "es_US", UNUM_PERCENT,              -0.34, fields_en_PRCT }, // rdar://57000745
+    { "es_MX", UNUM_PERCENT,              -0.34, fields_en_PRCT }, // rdar://42948387
     { "fr_FR", UNUM_CURRENCY_STANDARD, 123456.0, fields_fr_CURR },
     { "en_US", UNUM_PATTERN_DECIMAL,       12.0, fields_en_PATN },
     { NULL, (UNumberFormatStyle)0, 0, NULL },
@@ -4254,15 +4256,15 @@ static void TestCurrForUnkRegion(void) {
 }
 
 static void TestMinIntMinFracZero(void) {
+    UChar ubuf[kUBufMax];
+    char  bbuf[kBBufMax];
+    int minInt, minFrac, maxFrac, ulen;
+
     UErrorCode status = U_ZERO_ERROR;
     UNumberFormat* unum = unum_open(UNUM_DECIMAL, NULL, 0, "en_US", NULL, &status);
     if ( U_FAILURE(status) ) {
         log_data_err("unum_open UNUM_DECIMAL for en_US fails with %s\n", u_errorName(status));
     } else {
-        UChar ubuf[kUBufMax];
-        char  bbuf[kBBufMax];
-        int minInt, minFrac, ulen;
-
         unum_setAttribute(unum, UNUM_MIN_INTEGER_DIGITS, 0);
         unum_setAttribute(unum, UNUM_MIN_FRACTION_DIGITS, 0);
         minInt = unum_getAttribute(unum, UNUM_MIN_INTEGER_DIGITS);
@@ -4270,10 +4272,13 @@ static void TestMinIntMinFracZero(void) {
         if (minInt != 0 || minFrac != 0) {
             log_err("after setting minInt=minFrac=0, get minInt %d, minFrac %d\n", minInt, minFrac);
         }
+
         ulen = unum_toPattern(unum, FALSE, ubuf, kUBufMax, &status);
-        if ( U_SUCCESS(status) ) {
+        if ( U_FAILURE(status) ) {
+            log_err("unum_toPattern fails with %s\n", u_errorName(status));
+        } else if (ulen < 3 || u_strstr(ubuf, u"#.#")==NULL) {
             u_strToUTF8(bbuf, kBBufMax, NULL, ubuf, ulen, &status);
-            log_info("after setting minInt=minFrac=0, pattern (%d): %s\n", ulen, bbuf);
+            log_err("after setting minInt=minFrac=0, expect pattern to contain \"#.#\", but get (%d): \"%s\"\n", ulen, bbuf);
         }
 
         status = U_ZERO_ERROR;
@@ -4305,6 +4310,75 @@ static void TestMinIntMinFracZero(void) {
 
         unum_close(unum);
     }
+
+    status = U_ZERO_ERROR;
+    unum = unum_open(UNUM_CURRENCY, NULL, 0, "en_US", NULL, &status);
+    if ( U_FAILURE(status) ) {
+        log_data_err("unum_open UNUM_CURRENCY for en_US fails with %s\n", u_errorName(status));
+    } else {
+        unum_setAttribute(unum, UNUM_MIN_INTEGER_DIGITS, 0);
+        unum_setAttribute(unum, UNUM_MIN_FRACTION_DIGITS, 0);
+        minInt = unum_getAttribute(unum, UNUM_MIN_INTEGER_DIGITS);
+        minFrac = unum_getAttribute(unum, UNUM_MIN_FRACTION_DIGITS);
+        if (minInt != 0 || minFrac != 0) {
+            log_err("after setting CURRENCY minInt=minFrac=0, get minInt %d, minFrac %d\n", minInt, minFrac);
+        }
+
+        status = U_ZERO_ERROR;
+        ulen = unum_formatDouble(unum, 10.0, ubuf, kUBufMax, NULL, &status);
+        if ( U_FAILURE(status) ) {
+            log_err("unum_formatDouble (CURRRENCY) 10.0 ulen %d fails with %s\n", ulen, u_errorName(status));
+        } else if (u_strcmp(ubuf, u"$10") != 0) {
+            u_strToUTF8(bbuf, kBBufMax, NULL, ubuf, ulen, &status);
+            log_err("unum_formatDouble (CURRRENCY) 10.0 expected \"$10\", got \"%s\"\n", bbuf);
+        }
+
+        status = U_ZERO_ERROR;
+        ulen = unum_formatDouble(unum, 0.9, ubuf, kUBufMax, NULL, &status);
+        if ( U_FAILURE(status) ) {
+            log_err("unum_formatDouble (CURRRENCY) 0.9 ulen %d fails with %s\n", ulen, u_errorName(status));
+        } else if (u_strcmp(ubuf, u"$.9") != 0) {
+            u_strToUTF8(bbuf, kBBufMax, NULL, ubuf, ulen, &status);
+            log_err("unum_formatDouble (CURRRENCY) 0.9 expected \"$.9\", got \"%s\"\n", bbuf);
+        }
+
+        status = U_ZERO_ERROR;
+        ulen = unum_formatDouble(unum, 0.0, ubuf, kUBufMax, NULL, &status);
+        if ( U_FAILURE(status) ) {
+            log_err("unum_formatDouble (CURRRENCY) 0.0 ulen %d fails with %s\n", ulen, u_errorName(status));
+        } else if (u_strcmp(ubuf, u"$0") != 0) {
+            u_strToUTF8(bbuf, kBBufMax, NULL, ubuf, ulen, &status);
+            log_err("unum_formatDouble (CURRRENCY) 0.0 expected \"$0\", got \"%s\"\n", bbuf);
+        }
+
+        unum_close(unum);
+    }
+
+   // addition for rdar://57291456
+    status = U_ZERO_ERROR;
+    unum = unum_open(UNUM_PATTERN_DECIMAL, NULL, 0, "en_IE", NULL, &status);
+    if ( U_FAILURE(status) ) {
+        log_data_err("unum_open UNUM_DECIMAL for en_US fails with %s\n", u_errorName(status));
+    } else {
+        unum_setAttribute(unum, UNUM_MIN_INTEGER_DIGITS, 0);
+        unum_setAttribute(unum, UNUM_MAX_FRACTION_DIGITS, 1);
+        minInt = unum_getAttribute(unum, UNUM_MIN_INTEGER_DIGITS);
+        maxFrac = unum_getAttribute(unum, UNUM_MAX_FRACTION_DIGITS);
+        if (minInt != 0 || maxFrac != 1) {
+            log_err("after setting minInt=0, maxFrac=1, get minInt %d, maxFrac %d\n", minInt, maxFrac);
+        }
+
+        status = U_ZERO_ERROR;
+        ulen = unum_formatDouble(unum, 0.0, ubuf, kUBufMax, NULL, &status);
+        if ( U_FAILURE(status) ) {
+            log_err("unum_formatDouble (maxFrac 1) 0.0 ulen %d fails with %s\n", ulen, u_errorName(status));
+        } else if (u_strcmp(ubuf, u".0") != 0) {
+            u_strToUTF8(bbuf, kBBufMax, NULL, ubuf, ulen, &status);
+            log_err("unum_formatDouble (maxFrac 1) 0.0 expected \".0\", got \"%s\"\n", bbuf);
+        }
+
+        unum_close(unum);
+    }
 }
 
 #if APPLE_ADDITIONS
index f0d941d3c255e3e9d953cbd7face8e8d10b5489d..fde8e13723d622ece5e08049699296116e52a97f 100644 (file)
@@ -1613,7 +1613,7 @@ void NumberFormatterApiTest::integerWidth() {
             u".8765",
             u".08765",
             u".008765",
-            u""); // TODO: Avoid the empty string here?
+            u"0");  // see ICU-20844
 
     assertFormatDescending(
             u"Integer Width Zero Fill 3",