// per-test field names, and finally the test specific field values, 1 test
// per line.
//
-// breaks field names:
+// Field names:
// H = ICU4J 58 (archive)
// J = ICU4J (current)
// K = JDK (ignored if not OpenJDK 1.8)
// C = ICU4C (current)
// P = Properties-based ICU4J (bypasses DecimalFormat wrapper)
-// Q = ? (old, from ICU 61 tests, maybe the same as P?
//
// For more information on the format of this file, including all the available
// field names, please see
set locale fr_FR
set format 1234.567
begin
-pattern output
-#,##0.## 1\u00a0234,57
+pattern output breaks
+// K does not use \u202f narrow space
+#,##0.## 1\u202f234,57 K
0.## 1234,57
0 1235
-#,##0.### 1\u00a0234,567
+#,##0.### 1\u202f234,567 K
###0.###### 1234,567
###0.0000# 1234,5670
00000.0000 01234,5670
-#,##0.00 \u00a4 1\u00a0234,57 \u20ac
+#,##0.00 \u00a4 1\u202f234,57 \u20ac K
'tick''bitten '0.00 tick'bitten 1234,57
'tick' 'bitten '0.00 tick bitten 1234,57
4 10.0 8 K
2.70 99.0 99,90 K
2.73 272.0 273,00 K
-#,#3.70 104.0 1\u00a003,60 K
+#,#3.70 104.0 1\u202f03,60 K
test significant digits
set locale en
#E0 52413 5,2413E4 K
0E0 52413 5E4
+test scientific infinite precision
+// ICU-11511, ICU-7460, CLDR-10103
+set locale en
+begin
+pattern format output breaks
+// From the spec:
+// "0.##E0 means a max of 3 significant digits."
+0.##E0 98760 9.88E4
+// "#.##E0 also means a max of 3 significant digits."
+#.##E0 98760 9.88E4
+// "#.0#E0 means a max of 2 significant digits."
+#.0#E0 98760 9.9E4 K
+// "0E0 means a max of 1 significant digit."
+0E0 98760 1E5
+// "#E0 means infinite precision."
+#E0 98760 9.876E4 K
+// "###E0 means engineering notation with infinite precision."
+###E0 98760 98.76E3 K
+// Additional tests:
+##0.#E0 98760 99E3 K
+###.#E0 98760 99E3 K
+##0E0 98760 100E3 K
+
test percents
set locale fr
begin
p%p0.0 0.573 p%p57,3
p'%'p0.0 0.573 p%p0,6
%@@@@ 0.0326 %3,260 K
-%#,@@@ 15.43 %1\u00a0540 K
+%#,@@@ 15.43 %1\u202f540 K
// JDK does not support rounding increments
-%#,##4.1 16.55 %1\u00a0656,4 K
+%#,##4.1 16.55 %1\u202f656,4 K
// JDK gives %16,255E3
%##0.00E0 162.55 %16,3E3 K
p\u2030p0.0 0.573 p\u2030p573,0
p'\u2030'p0.0 0.573 p\u2030p0,6
\u2030@@@@ 0.0326 \u203032,60 K
-\u2030#,@@@ 15.43 \u203015\u00a0400 K
-\u2030#,##4.1 16.55 \u203016\u00a0551,7 K
+\u2030#,@@@ 15.43 \u203015\u202f400 K
+\u2030#,##4.1 16.55 \u203016\u202f551,7 K
// JDK gives \u2030162,55E3
\u2030##0.00E0 162.55 \u2030163E3 K
begin
pattern format output breaks
// JDK does not seem to support padding
-$**####,##0 1234 $***1\u00a0234 K
-*x$####,##0 1234 xxx$1\u00a0234 K
-####,##0*x$ 1234 1\u00a0234xxx$ K
-####,##0$*x 1234 1\u00a0234$xxx K
+$**####,##0 1234 $***1\u202f234 K
+*x$####,##0 1234 xxx$1\u202f234 K
+####,##0*x$ 1234 1\u202f234xxx$ K
+####,##0$*x 1234 1\u202f234$xxx K
// JDK doesn't seem to handle suffixes correctly dropping the 'nx' entirely
-####,##0$*x;ne#n -1234 ne1\u00a0234nx K
-####,##0$*x;n#'*' -1234 n1\u00a0234*xx K
+####,##0$*x;ne#n -1234 ne1\u202f234nx K
+####,##0$*x;n#'*' -1234 n1\u202f234*xx K
*y%4.2###### 4.33 yyyy%432,6 K
// In J ICU adds padding as if 'EUR' is only 2 chars (2 * 0xa4)
\u00a4\u00a4 **####0.00 433.0 EUR *433,00 HK
begin
pattern currency output breaks
// JDK gives shows EUR instead of the euro symbol in this case
-#,##0.00 \u00a4 EUR 1\u00a0234,57 \u20ac K
+#,##0.00 \u00a4 EUR 1\u202f234,57 \u20ac K
// JDK gives 1\u00A0234,57. JDK doesn't seem to correct rounding
// based on currency.
-#,##0.00 \u00a4 JPY 1\u00a0235 JPY K
+#,##0.00 \u00a4 JPY 1\u202f235 JPY K
test prefixes and suffixes
set locale en
1 1 0 0 3E8
// JDK gives E0 instead of allowing for unlimited precision
0 0 0 0 2.99792458E8 K
-// JDK gives .299792E9; Q gives 2.99792E8
-0 1 0 5 2.9979E8 KQ
+// J gives 2.9979E8
+0 1 0 5 2.99792E8 HK
// JDK gives 300E6
0 3 0 0 299.792458E6 K
// JDK gives 299.8E6 (maybe maxInt + maxFrac instead of minInt + maxFrac)?
0 0 1 5 .29979E9
// JDK gives E0
0 0 1 0 2.99792458E8 K
-// JDK and Q give .2998E9
-0 0 0 4 2.998E8 KQ
+// J gives 2.998E8
+0 0 0 4 .29979E9 HK
// According to the spec, if maxInt>minInt and minInt>1, then set
// Context: #13289
2 8 1 6 2.9979246E8 K
// JDK fails here because it tries to use 9 + 6 = 15 sig digits.
2 9 1 6 29.979246E7 K
+test ticket 20058
+set locale en
+begin
+pattern format output breaks
+#00.0##E0 0 0.0E0 K
+#00.0##E0 1.2 1.2E0 K
+#00.0E0 0 0.0E0 K
+#00.0E0 1.2 1.2E0 K
+
test significant digits scientific
set locale en
set pattern #E0
begin
format maxIntegerDigits output breaks
123 1 3
-// (ICU 61 behavior)
-0 0 0
-// Q ignores max integer if it is less than zero and prints "123"
-123 -2147483648 0 Q
+// C obeys maxIntegerDigits and prints after the decimal place
+0 0 .0 HKP
+// CJP ignore max integer if it is less than zero and prints "123"
+123 -2147483648 0 CJP
12345 1 5
-12345 -2147483648 0 Q
+12345 -2147483648 0 CJP
5.3 1 5.3
-5.3 -2147483648 .3 Q
+5.3 -2147483648 .3 CJP
test patterns with zero
set locale en
begin
currency currencyUsage toPattern breaks
// These work in J, but it prepends an extra hash sign to the pattern.
-// C does not print the currency rounding information in the pattern.
// K does not support this feature.
-USD standard 0.00 CHK
-CHF standard 0.00 CHK
-CZK standard 0.00 CHK
-USD cash 0.00 CHK
-CHF cash 0.05 CHK
-CZK cash 0 CHK
+USD standard 0.00 HK
+CHF standard 0.00 HK
+CZK standard 0.00 HK
+USD cash 0.00 HK
+CHF cash 0.05 HK
+CZK cash 0 HK
test currency rounding
set locale en
-Inf (\u221e) K
// J does not print the affixes
// K prints \uFFFD
-// Q prints the affixes
-NaN NaN HKQ
+NaN [NaN] HK
test nan and infinity with multiplication
set locale en
Inf afterSuffix $$$\u221e$ K
// J does not print the affixes
// K prints \uFFFD
-// Q gets $$$NaN$
-NaN beforePrefix NaN HKQ
-NaN afterPrefix NaN HKQ
-NaN beforeSuffix NaN HKQ
-NaN afterSuffix NaN HKQ
+NaN beforePrefix $$$NaN$ HK
+NaN afterPrefix $$$ NaN$ HK
+NaN beforeSuffix $$$NaN $ HK
+NaN afterSuffix $$$NaN$ HK
test apply formerly localized patterns
begin
**0,000 **0,000 HK
**##0,000 **##0,000 K
**###0,000 **###0,000 K
-**####0,000 **#,##0,000 JKP
+**####0,000 **#,##0,000 CJKP
###,000. #,000.
-0,000 #0,000 JP
+0,000 #0,000 CJP
.00 #.00
-000 #000 JP
-000,000 #,000,000 JP
+000 #000 CJP
+000,000 #,000,000 CJP
pp#,000 pp#,000
-00.## #00.## JP
+00.## #00.## CJP
#,#00.025 #,#00.025
// No secondary grouping in JDK
#,##,###.02500 #,##,###.02500 K
pp#,000;(#) pp#,000;(#,000) K
-**####,##,##0.0##;(#) **#,##,##,##0.0##;**(##,##,##0.0##) JKP
+**####,##,##0.0##;(#) **#,##,##,##0.0##;**(##,##,##0.0##) CJKP
// No significant digits in JDK
@@### @@### K
@,@#,### @,@#,### K
5,347.25 5347.25 HK
(5,347.25 -5347.25 H
// S is successful at parsing this as -5347.25 in lenient mode
--5,347.25 -5347.25 CHK
+-5,347.25 -5347.25 HK
+3.52E4 35200
(34.8E-3) -0.0348
// JDK stops parsing at the spaces. JDK doesn't see space as a grouping separator
// Trailing grouping separators are not OK.
// H fails; C/J/P stop at the offending separator.
(34,,25,E-1) fail CJKP
-(34,,25,E-1) -342.5 H
+(34,,25,E-1) -3425 HK
(34 25 E-1) -342.5 HK
-(34,,25 E-1) -342.5 CHK
+(34,,25 E-1) -342.5 HK
// Spaces are not allowed after exponent symbol
// C parses up to the E but H bails
(34 25E -1) -3425 HK
set pattern #,##0.0###+;#-
begin
parse output breaks
-// C sees this as -3426, don't understand why.
// J and K just bail.
-3426 3426 CHK
+3426 3426 HK
3426+ 3426
-// J bails; C and K see -34
-34 d1+ 34 CHK
+// J bails; K sees -34
+34 d1+ 34 HK
// JDK sees this as -1234 for some reason
// H bails b/c of trailing separators
-// C parses until trailing separators, but sees -1234
-1,234,,,+ 1234 CHK
+1,234,,,+ 1234 HK
1,234- -1234
-// H and P bail because of trailing separators
-1,234,- -1234 HJP
+// H, C, and P bail because of trailing separators
+1,234,- -1234 CHJP
// J bails here too
1234 - -1234 H
+1,234.5 1234.5
// Comma after decimal means parse to a comma
+1,23,456.78,9 123456.78
-// C and H fail upon seeing the second decimal point
-+1,23,456.78.9 123456.78 CH
+// H fails upon seeing the second decimal point
++1,23,456.78.9 123456.78 H
+79 79
+79 79
+ 79 fail
parse output breaks
35 35
// S accepts leading plus signs
-+35 35 CHK
++35 35 HK
-35 -35
2.63 2
-39.99 -39
parse output outputCurrency breaks
53.45 fail GBP
£53.45 53.45 GBP
-$53.45 fail USD J
+$53.45 53.45 USD C
53.45 USD 53.45 USD
53.45 GBP 53.45 GBP
USD 53.45 53.45 USD H
-53.45USD 53.45 USD CH
+53.45USD 53.45 USD H
USD53.45 53.45 USD
(7.92) USD -7.92 USD
(7.92) GBP -7.92 GBP
(7.926) USD -7.926 USD
-(7.926 USD) -7.926 USD CH
-(USD 7.926) -7.926 USD CH
-USD (7.926) -7.926 USD CH
-USD (7.92) -7.92 USD CH
-(7.92)USD -7.92 USD CH
-USD(7.92) -7.92 USD CH
+(7.926 USD) -7.926 USD H
+(USD 7.926) -7.926 USD H
+USD (7.926) -7.926 USD H
+USD (7.92) -7.92 USD H
+(7.92)USD -7.92 USD H
+USD(7.92) -7.92 USD H
(8) USD -8 USD
--8 USD -8 USD C
+-8 USD -8 USD
67 USD 67 USD
-53.45$ fail USD
+53.45$ 53.45 USD CH
US Dollars 53.45 53.45 USD H
53.45 US Dollars 53.45 USD
US Dollar 53.45 53.45 USD H
53.45 US Dollar 53.45 USD
US Dollars53.45 53.45 USD
-53.45US Dollars 53.45 USD CH
+53.45US Dollars 53.45 USD H
US Dollar53.45 53.45 USD
US Dollat53.45 fail USD
-53.45US Dollar 53.45 USD CH
-US Dollars (53.45) -53.45 USD CH
+53.45US Dollar 53.45 USD H
+US Dollars (53.45) -53.45 USD H
(53.45) US Dollars -53.45 USD
(53.45) Euros -53.45 EUR
-US Dollar (53.45) -53.45 USD CH
+US Dollar (53.45) -53.45 USD H
(53.45) US Dollar -53.45 USD
-US Dollars(53.45) -53.45 USD CH
-(53.45)US Dollars -53.45 USD CH
-US Dollar(53.45) -53.45 USD CH
+US Dollars(53.45) -53.45 USD H
+(53.45)US Dollars -53.45 USD H
+US Dollar(53.45) -53.45 USD H
US Dollat(53.45) fail USD
-(53.45)US Dollar -53.45 USD CH
+(53.45)US Dollar -53.45 USD H
test parse currency ISO negative
parse output outputCurrency breaks
53.45 fail GBP
£53.45 53.45 GBP
-$53.45 fail USD J
+$53.45 53.45 USD C
53.45 USD 53.45 USD
53.45 GBP 53.45 GBP
USD 53.45 53.45 USD H
-53.45USD 53.45 USD CH
+53.45USD 53.45 USD H
USD53.45 53.45 USD
-7.92 USD -7.92 USD
-7.92 GBP -7.92 GBP
-7.926 USD -7.926 USD
-USD -7.926 -7.926 USD CH
--7.92USD -7.92 USD CH
-USD-7.92 -7.92 USD CH
+USD -7.926 -7.926 USD H
+-7.92USD -7.92 USD H
+USD-7.92 -7.92 USD H
-8 USD -8 USD
67 USD 67 USD
53.45$ 53.45 USD CH
US Dollar 53.45 53.45 USD H
53.45 US Dollar 53.45 USD
US Dollars53.45 53.45 USD
-53.45US Dollars 53.45 USD CH
+53.45US Dollars 53.45 USD H
US Dollar53.45 53.45 USD
US Dollat53.45 fail USD
-53.45US Dollar 53.45 USD CH
+53.45US Dollar 53.45 USD H
test parse currency long
// H throws a NullPointerException on the first case
53.45 fail GBP
£53.45 53.45 GBP
-$53.45 fail USD J
+$53.45 53.45 USD C
53.45 USD 53.45 USD
53.45 GBP 53.45 GBP
USD 53.45 53.45 USD H
-53.45USD 53.45 USD CH
+53.45USD 53.45 USD H
USD53.45 53.45 USD
(7.92) USD -7.92 USD
(7.92) GBP -7.92 GBP
(7.926) USD -7.926 USD
-(7.926 USD) -7.926 USD CH
-(USD 7.926) -7.926 USD CH
-USD (7.926) -7.926 USD CH
-USD (7.92) -7.92 USD CH
-(7.92)USD -7.92 USD CH
-USD(7.92) -7.92 USD CH
+(7.926 USD) -7.926 USD H
+(USD 7.926) -7.926 USD H
+USD (7.926) -7.926 USD H
+USD (7.92) -7.92 USD H
+(7.92)USD -7.92 USD H
+USD(7.92) -7.92 USD H
(8) USD -8 USD
--8 USD -8 USD C
+-8 USD -8 USD
67 USD 67 USD
// H throws a NullPointerException on the next case
53.45$ 53.45 USD CH
US Dollar 53.45 53.45 USD H
53.45 US Dollar 53.45 USD
US Dollars53.45 53.45 USD
-53.45US Dollars 53.45 USD CH
+53.45US Dollars 53.45 USD H
US Dollar53.45 53.45 USD
US Dollat53.45 fail USD
-53.45US Dollar 53.45 USD CH
+53.45US Dollar 53.45 USD H
test parse currency short
parse output outputCurrency breaks
53.45 fail GBP
£53.45 53.45 GBP
-$53.45 fail USD J
+$53.45 53.45 USD C
53.45 USD 53.45 USD
53.45 GBP 53.45 GBP
USD 53.45 53.45 USD H
-53.45USD 53.45 USD CH
+53.45USD 53.45 USD H
USD53.45 53.45 USD
(7.92) USD -7.92 USD
(7.92) GBP -7.92 GBP
(7.926) USD -7.926 USD
-(7.926 USD) -7.926 USD CH
-(USD 7.926) -7.926 USD CH
-USD (7.926) -7.926 USD CH
-USD (7.92) -7.92 USD CH
-(7.92)USD -7.92 USD CH
-USD(7.92) -7.92 USD CH
+(7.926 USD) -7.926 USD H
+(USD 7.926) -7.926 USD H
+USD (7.926) -7.926 USD H
+USD (7.92) -7.92 USD H
+(7.92)USD -7.92 USD H
+USD(7.92) -7.92 USD H
(8) USD -8 USD
--8 USD -8 USD C
+-8 USD -8 USD
67 USD 67 USD
53.45$ 53.45 USD CH
US Dollars 53.45 53.45 USD H
US Dollar 53.45 53.45 USD H
53.45 US Dollar 53.45 USD
US Dollars53.45 53.45 USD
-53.45US Dollars 53.45 USD CH
+53.45US Dollars 53.45 USD H
US Dollar53.45 53.45 USD
US Dollat53.45 fail USD
-53.45US Dollar 53.45 USD CH
+53.45US Dollar 53.45 USD H
test parse currency short prefix
parse output outputCurrency breaks
53.45 fail GBP
£53.45 53.45 GBP
-$53.45 fail USD J
-53.45 USD 53.45 USD C
-53.45 GBP 53.45 GBP C
+$53.45 53.45 USD C
+53.45 USD 53.45 USD
+53.45 GBP 53.45 GBP
USD 53.45 53.45 USD H
-53.45USD 53.45 USD CH
+53.45USD 53.45 USD H
USD53.45 53.45 USD
// C and P fail these because '(' is an incomplete prefix.
(7.92) USD -7.92 USD CHJP
(7.92)USD -7.92 USD CHJP
USD(7.92) -7.92 USD CHJP
(8) USD -8 USD CHJP
--8 USD -8 USD C
-67 USD 67 USD C
+-8 USD -8 USD
+67 USD 67 USD
53.45$ 53.45 USD CH
US Dollars 53.45 53.45 USD H
53.45 US Dollars 53.45 USD
US Dollar 53.45 53.45 USD H
53.45 US Dollar 53.45 USD
US Dollars53.45 53.45 USD
-53.45US Dollars 53.45 USD CH
+53.45US Dollars 53.45 USD H
US Dollar53.45 53.45 USD
-53.45US Dollar 53.45 USD CH
+53.45US Dollar 53.45 USD H
test format foreign currency
set locale fa_IR
\u0631\u06cc\u0627\u0644 \u06F1\u06F2\u06F3\u06F5 1235 IRR
IRR \u06F1\u06F2\u06F3\u06F5 1235 IRR
// P fails here because this currency name is in the Trie only, but it has the same prefix as the non-Trie currency
-\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR JP
+\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR CJP
IRR 1235 1235 IRR
\u0631\u06cc\u0627\u0644 1235 1235 IRR
-\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 1235 1235 IRR JP
+\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 1235 1235 IRR CJP
test parse foreign currency ISO
set pattern \u00a4\u00a4 0.00;\u00a4\u00a4 -#
parse output outputCurrency breaks
\u0631\u06cc\u0627\u0644 \u06F1\u06F2\u06F3\u06F5 1235 IRR
IRR \u06F1\u06F2\u06F3\u06F5 1235 IRR
-\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR JP
+\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR CJP
IRR 1235 1235 IRR
\u0631\u06cc\u0627\u0644 1235 1235 IRR
-\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 1235 1235 IRR JP
+\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 1235 1235 IRR CJP
test parse foreign currency full
set pattern \u00a4\u00a4\u00a4 0.00;\u00a4\u00a4\u00a4 -#
parse output outputCurrency breaks
\u0631\u06cc\u0627\u0644 \u06F1\u06F2\u06F3\u06F5 1235 IRR
IRR \u06F1\u06F2\u06F3\u06F5 1235 IRR
-\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR JP
+\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR CJP
IRR 1235 1235 IRR
\u0631\u06cc\u0627\u0644 1235 1235 IRR
-\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 1235 1235 IRR JP
+\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 1235 1235 IRR CJP
test parse currency with foreign symbols symbol english
set pattern \u00a4 0.00;\u00a4 (#)
set lenient 0
begin
parse output outputCurrency breaks
-$53.45 53.45 USD JP
+$53.45 53.45 USD CJP
53.45 USD 53.45 USD
USD 53.45 fail USD
53.45USD fail USD
-USD53.45 53.45 USD JP
+USD53.45 53.45 USD CJP
(7.92) USD -7.92 USD
(7.92) EUR -7.92 EUR
(7.926) USD -7.926 USD
53.45 US Dollars 53.45 USD
US Dollar 53.45 fail USD
53.45 US Dollar 53.45 USD
-US Dollars53.45 53.45 USD JP
+US Dollars53.45 53.45 USD CJP
53.45US Dollars fail USD
-US Dollar53.45 53.45 USD JP
+US Dollar53.45 53.45 USD CJP
US Dollat53.45 fail USD
53.45US Dollar fail USD
US Dollars (53.45) fail USD
pattern parse output breaks
// K doesn't support this feature.
0 123 123
-0 123. fail CHK
-0 1.23 fail CHK
+0 123. fail HK
+0 1.23 fail HK
0 -513 -513
-0 -513. fail CHK
-0 -5.13 fail CHK
+0 -513. fail HK
+0 -5.13 fail HK
0.0 123 fail K
-0.0 123. 123 C
-0.0 1.23 1.23 C
+0.0 123. 123
+0.0 1.23 1.23
0.0 -513 fail K
0.0 -513. -513
0.0 -5.13 -5.13
AA1.23 1 fail
// H and K do not support case-insensitive parsing for prefix/suffix.
// H supports it for the exponent separator, but not K.
-AA1.23 0 1.23 CHK
+AA1.23 0 1.23 HK
aa1.23 1 fail
-aa1.23 0 1.23 CHK
+aa1.23 0 1.23 HK
Aa1.23E3 1 1230
Aa1.23E3 0 1230
-Aa1.23e3 1 1.23 CH
+Aa1.23e3 1 1.23 H
Aa1.23e3 0 1230 K
NaN 1 NaN K
NaN 0 NaN K
nan 1 fail
-nan 0 NaN CHK
+nan 0 NaN HK
test parse infinity and scientific notation overflow
set locale en
pattern lenient parse output breaks
// Groups after the first group need 2 digits to be accepted.
// JDK does not see space as grouping and parses most of these as 9.
-#,##0 1 9 9 9 CH
+#,##0 1 9 9 9 H
#,##0 1 9 99 999 K
#,##0 1 9 999 9999 K
-#,##0 1 9 9 9 9 CH
+#,##0 1 9 9 9 9 H
#,##0 1 ,9 9
#,##0 1 99,.0 99
-#,##0 1 9 9. 9 CH
+#,##0 1 9 9. 9 H
#,##0 1 9 99. 999 K
0 1 9 9 9
0 1 9 99 9
y g h56 -56 HK
// S stops parsing after the 'i' for these and returns -56
// C stops before the 'i' and gets 56
-56ijk -56 CHK
-56i jk -56 CHK
-56ij k -56 CHK
-56ijk -56 CHK
-56ijk -56 CHK
-56i jk -56 CHK
-56i jk -56 CHK
+56ijk -56 HK
+56i jk -56 HK
+56ij k -56 HK
+56ijk -56 HK
+56ijk -56 HK
+56i jk -56 HK
+56i jk -56 HK
// S and C get 56 (accepts ' ' gs grouping); H and K get null
5 6 fail CJP
56 5 HK
set pattern #,##0
begin
parse output breaks
-1 2 1 CH
+1 2 1 H
1 23 123 K
// K gets 1 here; doesn't pick up the grouping separator
1 234 1234 K
pattern format output breaks
0 -15 -15
0; -15 -15
-// C, H and K still prepend a '-' even though the pattern says otherwise
-0;0 -15 15 CHK
+// H and K still prepend a '-' even though the pattern says otherwise
+0;0 -15 15 HK
test percentage multiplier parsing
// This test is for #13129
set signAlwaysShown 1
begin
format output breaks
-// C, H and K do not support this feature
-42 +42 CHK
-0 +0 CHK
+// H and K do not support this feature
+42 +42 HK
+0 +0 HK
-42 -42
test parse strict with plus sign
lenient parse output breaks
1 42 42
1 -42 -42
-1 +42 42 CHK
+1 +42 42 HK
1 0 0
-1 +0 0 CHK
-0 42 fail CHK
+1 +0 0 HK
+0 42 fail HK
0 -42 -42
-0 +42 42 CHK
-0 0 fail CHK
-0 +0 0 CHK
+0 +42 42 HK
+0 0 fail HK
+0 +0 0 HK
test parse with scientific-separator-affix overlap
set locale en
0E0'.'x 1 5E3.x 5000
0E0'.'x 0 5E3.x 5000
-test parse lowercase currency
+test parse() lowercase currency
+set locale en
+set pattern ¤¤0
+set currency USD
+begin
+parse output breaks
+USD123 123
+USD 123 123 HK
+usd123 123 K
+usd 123 123 HK
+Usd123 123 K
+Usd 123 123 HK
+// US$ is not used for US dollars in en-US
+US$123 fail H
+us$123 fail
+Us$123 fail
+123 US dollars 123 K
+123 US DOLLARS 123 K
+123 us dollars 123 K
+// Foreign currencies are not accepted in .parse()
+GBP123 fail
+gbp123 fail
+British pounds 123 fail
+british POUNDS 123 fail
+
+test parseCurrency() lowercase currency
set locale en
set pattern ¤¤0
set currency USD
parse output outputCurrency breaks
USD123 123 USD
USD 123 123 USD H
-// C does not currently accept case-insensitive ISO codes
-usd123 123 USD C
-usd 123 123 USD CH
-Usd123 123 USD C
-Usd 123 123 USD CH
+usd123 123 USD
+usd 123 123 USD H
+Usd123 123 USD
+Usd 123 123 USD H
US$123 123 USD C
us$123 fail fail
Us$123 fail fail
123 US dollars 123 USD
123 US DOLLARS 123 USD
123 us dollars 123 USD
+GBP123 123 GBP
+gbp123 123 GBP C
+British pounds 123 123 GBP H
+british POUNDS 123 123 GBP H