]> git.saurik.com Git - apple/icu.git/blob - icuSources/test/testdata/numberformattestspecification.txt
ICU-59131.0.1.tar.gz
[apple/icu.git] / icuSources / test / testdata / numberformattestspecification.txt
1 // Copyright (C) 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 // Copyright (C) 2015-2016, International Business Machines
4 // Corporation and others. All Rights Reserved.
5 //
6 // This file is divided into test suites separated by whitespace. Each test
7 // suite starts with the name of the test followed by global field settings
8 // for that test suite. After the global settings, comes "begin", the
9 // per-test field names, and finally the test specific field values, 1 test
10 // per line.
11 // For more information on the format of this file, including all the available
12 // field names, please see
13 // https://docs.google.com/document/d/1T2P0p953_Lh1pRwo-5CuPVrHlIBa_wcXElG-Hhg_WHM/edit?usp=sharing
14
15 test plus sign
16 set locale ar
17 set pattern +0;-#
18 begin
19 format output breaks
20 6 \u061C+\u0666 JK
21 -6 \u061C-\u0666 JK
22
23 test basic patterns
24 set locale fr_FR
25 set format 1234.567
26 begin
27 pattern output
28 #,##0.## 1\u00a0234,57
29 0.## 1234,57
30 0 1235
31 #,##0.### 1\u00a0234,567
32 ###0.###### 1234,567
33 ###0.0000# 1234,5670
34 00000.0000 01234,5670
35 #,##0.00 \u00a4 1\u00a0234,57 \u20ac
36 'tick''bitten '0.00 tick'bitten 1234,57
37 'tick' 'bitten '0.00 tick bitten 1234,57
38
39
40 test minimum and maximum fraction digits
41 set locale en
42 set minIntegerDigits 2
43 set maxIntegerDigits 4
44 set minFractionDigits 3
45 set maxFractionDigits 5
46 begin
47 format output
48 6 06.000
49 6.000005 06.000
50 6.000006 06.00001
51 1002003004005 4005.000
52 -1002003004005 -4005.000
53 12 12.000
54 12345 2345.000
55 72.1234 72.1234
56
57 test int64
58 set locale en
59 begin
60 format output
61 1002003004005 1002003004005
62 -1002003004005 -1002003004005
63
64 test rounding
65 set locale fr
66 begin
67 pattern format output breaks
68 0.5 1.25 1,0 K
69 0.5 1.75 2,0 K
70 0.5 -1.25 -1,0 K
71 00.5 -1.75 -02,0 K
72 4 2.0 0 K
73 4 6.0 8 K
74 4 10.0 8 K
75 2.70 99.0 99,90 K
76 2.73 272.0 273,00 K
77 #,#3.70 104.0 1\u00a003,60 K
78
79 test significant digits
80 set locale en
81 set pattern #,#@,@###
82 begin
83 format output breaks
84 7 7.0 K
85 23 23 K
86 100 100 K
87 1000 1000 K
88 10000 1,0000 K
89 10001 1,0001 K
90 10001.5 1,0002 K
91 1234567 1,23,4600 K
92 -1234567 -1,23,4600 K
93 3.14159 3.1416 K
94
95 test scientific notation
96 set locale fr
97 begin
98 pattern format output breaks
99 0.00E0 12345 1,23E4
100 000.00E0 12300 123,00E2
101 000.0#E0 12300 123,0E2
102 000.0#E0 12300.1 123,0E2
103 000.0#E0 12301.0 123,01E2
104 // JDK does not support exponent signs
105 000.0#E+00 12301.0 123,01E+02 K
106 // JDK gives 12,345E3. JDK seems to include the hashes in significant digits
107 ##0.00E0 12345 12,3E3 K
108 // JDK gives 12,3001E3
109 ##0.0000E0 12300.1 12,300E3 K
110 // JDK gives 12,3001E3
111 ##0.000#E0 12300.1 12,30E3 K
112 ##0.000#E0 12301 12,301E3
113 0.05E0 12301.2 1,25E4 JK
114 ##0.000#E0 0.17 170,0E-3
115 // JDK doesn't support significant digits in exponents
116 @@@E0 6235 6,24E3 K
117 @@@#E0 6200 6,20E3 K
118 @@@#E0 6201 6,201E3 K
119 @@@#E0 6201.7 6,202E3 K
120 @@@#E00 6201.7 6,202E03 K
121 @@@#E+00 6201.7 6,202E+03 K
122
123 test percents
124 set locale fr
125 begin
126 pattern format output breaks
127 0.0% 0.573 57,3%
128 %0.0 0.573 %57,3
129 p%p0.0 0.573 p%p57,3
130 p'%'p0.0 0.573 p%p0,6
131 %@@@@ 0.0326 %3,260 K
132 %#,@@@ 15.43 %1\u00a0540 K
133 // JDK does not support rounding increments
134 %#,##4.1 16.55 %1\u00a0656,4 K
135 // JDK gives %16,255E3
136 %##0.00E0 162.55 %16,3E3 K
137
138 test permille
139 set locale fr
140 begin
141 pattern format output breaks
142 0.0\u2030 0.573 573,0‰
143 \u20300.0 0.573 \u2030573,0
144 p\u2030p0.0 0.573 p\u2030p573,0
145 p'\u2030'p0.0 0.573 p\u2030p0,6
146 \u2030@@@@ 0.0326 \u203032,60 K
147 \u2030#,@@@ 15.43 \u203015\u00a0400 K
148 \u2030#,##4.1 16.55 \u203016\u00a0551,7 K
149 // JDK gives \u2030162,55E3
150 \u2030##0.00E0 162.55 \u2030163E3 K
151
152 test padding
153 set locale fr_FR
154 begin
155 pattern format output breaks
156 // JDK does not seem to support padding
157 $**####,##0 1234 $***1\u00a0234 K
158 *x$####,##0 1234 xxx$1\u00a0234 K
159 ####,##0*x$ 1234 1\u00a0234xxx$ K
160 ####,##0$*x 1234 1\u00a0234$xxx K
161 // JDK doesn't seem to handle suffixes correctly dropping the 'nx' entirely
162 ####,##0$*x;ne#n -1234 ne1\u00a0234nx K
163 ####,##0$*x;n#'*' -1234 n1\u00a0234*xx K
164 *y%4.2###### 4.33 yyyy%432,6 K
165 // In J ICU adds padding as if 'EUR' is only 2 chars (2 * 0xa4)
166 \u00a4\u00a4 **####0.00 433.0 EUR *433,00 JK
167 // In J ICU adds padding as if 'EUR' is only 2 chars (2 * 0xa4)
168 \u00a4\u00a4 **#######0 433.0 EUR *433,00 JK
169
170 test padding and currencies
171 begin
172 locale currency pattern format output breaks
173 // In J, JPY is considered 2 char (2 * 0xa4) even though padding is done
174 // after prefix. In C this test works.
175 fr JPY \u00a4\u00a4 **#######0 433.22 JPY ****433 JK
176 // JDK doesn't correct rounding for currency, shows USD (433
177 en USD \u00a4\u00a4 **#######0;\u00a4\u00a4 (#) -433.22 USD (433.22) K
178
179 test currencies
180 set locale fr
181 set format 1234.567
182 begin
183 pattern currency output breaks
184 // JDK gives shows EUR instead of the euro symbol in this case
185 #,##0.00 \u00a4 EUR 1\u00a0234,57 \u20ac K
186 // JDK gives 1\u00A0234,57. JDK doesn't seem to correct rounding
187 // based on currency.
188 #,##0.00 \u00a4 JPY 1\u00a0235 JPY K
189
190 test prefixes and suffixes
191 set locale en
192 set pattern 0.00+;(#)
193 begin
194 format output breaks
195 7 7.00+
196 // JDK does not support negative suffixes
197 -3.5 (3.50) K
198
199 test minimum grouping digits
200 set locale en
201 set pattern #,##0
202 set minGroupingDigits 2
203 begin
204 format output breaks
205 // min grouping digits not supported in any existing implementation
206 // but could be easily added to the new DecimalFormat C code.
207 1000 1000 JK
208 10000 10,000
209 100000 100,000
210 1000000 1,000,000
211
212 test min max fraction digits
213 set locale en
214 set pattern #,##0.###
215 set format 1234.567
216 begin
217 minFractionDigits maxFractionDigits output
218 0 0 1,235
219 0 2 1,234.57
220 4 5 1,234.5670
221
222 test min max integer digits
223 set locale en
224 set pattern #,##0.###
225 set format 1234.567
226 begin
227 minIntegerDigits maxIntegerDigits output
228 0 0 .567
229 0 3 234.567
230 5 5 01,234.567
231
232 test min max fraction digits scientific
233 set locale en
234 set pattern #E0
235 set format 299792458.0
236 begin
237 minIntegerDigits maxIntegerDigits minFractionDigits maxFractionDigits output breaks
238 // JDK gives .3E9 instead of unlimited precision.
239 0 1 0 0 2.99792458E8 K
240 1 1 0 0 3E8
241 // JDK gives E0 instead of allowing for unlimited precision
242 0 0 0 0 2.99792458E8 K
243 // JDK gives .299792E9
244 0 1 0 5 2.9979E8 K
245 // JDK gives 300E6
246 0 3 0 0 299.792458E6 K
247 // JDK gives 299.8E6 (maybe maxInt + maxFrac instead of minInt + maxFrac)?
248 0 3 0 1 300E6 K
249 // JDK gives 299.7925E6
250 2 3 0 4 299.792E6 K
251 // JDK gives 299.79246E6
252 2 3 0 5 299.7925E6 K
253 3 3 0 5 299.79246E6
254 3 3 0 4 299.7925E6
255 2 2 0 3 29.979E7
256 4 4 0 0 2998E5
257 0 0 1 5 .29979E9
258 // JDK gives E0
259 0 0 1 0 2.99792458E8 K
260 // JDK gives .2998E9
261 0 0 0 4 2.998E8 K
262 // JDK uses 8 + 6 for significant digits instead of 2 + 6
263 2 8 1 6 2.9979246E8 K
264 // Treat max int digits > 8 as being the same as min int digits.
265 // This behavior is not spelled out in the specification.
266 // JDK fails here because it tries to use 9 + 6 = 15 sig digits.
267 2 9 1 6 29.979246E7 K
268
269 test significant digits scientific
270 set locale en
271 set pattern #E0
272 set format 290000000.0
273 begin
274 minSigDigits maxSigDigits output breaks
275 0 1 3E8 K
276 0 2 2.9E8 K
277 0 3 2.9E8 K
278 1 1 3E8 K
279 1 2 2.9E8 K
280 1 3 2.9E8 K
281 2 2 2.9E8 K
282 2 3 2.9E8 K
283 3 3 2.90E8 K
284 3 4 2.90E8 K
285
286 test min max fraction digits scientific 2
287 set locale en
288 set pattern #E0
289 set format 29979245.0
290 begin
291 minIntegerDigits maxIntegerDigits minFractionDigits maxFractionDigits output breaks
292 // JDK gives E0
293 0 0 0 0 2.9979245E7 K
294 // JDK gives .3E8
295 0 1 0 0 2.9979245E7 K
296 // JDK gives 2998E4.
297 0 4 0 0 2997.9245E4 K
298
299 test ticket 11524
300 set locale en
301 set pattern #,##0.###
302 begin
303 format maxIntegerDigits output
304 123 1 3
305 123 -2147483648 0
306 12345 1 5
307 12345 -2147483648 0
308 5.3 1 5.3
309 5.3 -2147483648 .3
310
311 test patterns with zero
312 set locale en
313 set format 0
314 begin
315 pattern output
316 #.# 0
317 #. 0.
318 .# .0
319 # 0
320 00.000E00 00.000E00
321 0.####E0 0E0
322 ##0.######E000 0E000
323
324 test significant digits manually set
325 set locale en_US
326 set pattern 0.0
327 set useSigDigits 1
328 set minSigDigits 3
329 set maxSigDigits 5
330 begin
331 format output breaks
332 0.0012 0.00120 K
333 0.00123 0.00123 K
334 0.001234 0.001234 K
335 0.0012345 0.0012345 K
336 0.00123456 0.0012346 K
337 -43 -43.0 K
338 -43.7 -43.7 K
339 -43.76 -43.76 K
340 -43.762 -43.762 K
341 -43.7626 -43.763 K
342
343 test grouping used setters
344 set locale en_US
345 set pattern #,##0
346 set format 12345
347 begin
348 output useGrouping
349 12,345
350 12,345 1
351 12345 0
352
353 test grouping setters
354 set locale en_US
355 set pattern 0
356 set format 123456789
357 set useGrouping 1
358 begin
359 output grouping breaks grouping2 minGroupingDigits
360 1,2345,6789 4
361 1,23,45,6789 4 K 2
362 1,23,45,6789 4 K 2 2
363 123,456789 6 K 6 3
364 123456789 6 JK 6 4
365
366 test multiplier setters
367 set locale en_US
368 begin
369 format multiplier output breaks
370 23 -12 -276
371 23 -1 -23
372 // ICU4J and JDK throw exception on zero multiplier. ICU4C does not.
373 23 0 23 JK
374 23 1 23
375 23 12 276
376 -23 12 -276
377 -23 -12 276
378
379 test rounding setters
380 set locale en_US
381 set pattern 0.0#
382 set roundingIncrement 0.25
383 begin
384 format output breaks
385 -0.35 -0.25 K
386 0.35 0.25 K
387 0.39 0.5 K
388 0.62 0.5 K
389 0.63 0.75 K
390
391 test padding setters
392 set locale en_US
393 set pattern bill0
394 set format 1357
395 begin
396 padCharacter formatWidth output breaks
397 * 8 bill1357 K
398 * 9 *bill1357 K
399 ^ 10 ^^bill1357 K
400
401 test use scientific setter
402 set locale en_US
403 set pattern 0.00
404 set format 186283
405 begin
406 output breaks useScientific
407 186283.00
408 1.86E5 K 1
409 186283.00 K 0
410
411 test rounding mode setters
412 set locale en_US
413 set pattern 0.#
414 set roundingIncrement 0.5
415 begin
416 format roundingMode output breaks
417 1.24 halfUp 1 K
418 1.25 halfUp 1.5 K
419 1.25 halfDown 1 K
420 1.26 halfDown 1.5 K
421 1.25 halfEven 1 K
422 -1.01 up -1.5 K
423 -1.49 down -1 K
424 1.01 up 1.5 K
425 1.49 down 1 K
426 -1.01 ceiling -1 K
427 -1.49 floor -1.5 K
428
429 test currency usage setters
430 // TODO: Find a country and currency where standard and cash differ
431 set locale CH
432 set currency CHF
433 set pattern \u00a4\u00a4 0
434 begin
435 format currencyUsage output breaks
436 0.37 standard CHF 0.37 K
437 // TODO: Get the rounding data into ICU4C and ICU4J
438 0.37 cash CHF 0.35 CJK
439
440 test exponent parameter setters
441 set locale en_US
442 set pattern 0.##E0
443 set format 299792458
444 begin
445 decimalSeparatorAlwaysShown exponentSignAlwaysShown minimumExponentDigits output breaks
446 0 0 2 3E08 K
447 0 1 3 3E+008 K
448 // ICU DecimalFormat J does not honor decimalSeparatorAlwaysShown
449 // for scientific notation. But JDK DecimalFormat does honor
450 // decimalSeparatorAlwaysShown K=JDK; C=ICU4C; J=ICU4J
451 // See ticket 11621
452 1 0 2 3.E08 JK
453 1 1 3 3.E+008 JK
454 1 0 1 3.E8
455 0 0 1 3E8
456
457 test exponent decimalSeparatorAlwaysShown default
458 set locale en_US
459 set pattern 0.##E0
460 begin
461 format output breaks decimalSeparatorAlwaysShown
462 // decimalSeparatorAlwaysShown off by default
463 299792458 3E8
464 299000000 2.99E8
465 299792458 3.E8 J 1
466
467 test pad position setters
468 set locale en_US
469 set pattern **[#####0.##];((#))
470 begin
471 format padPosition output breaks
472 12.34 beforePrefix ****[12.34] K
473 12.34 afterPrefix [****12.34] K
474 12.34 beforeSuffix [12.34****] K
475 12.34 afterSuffix [12.34]**** K
476 -12.34 beforePrefix **((12.34)) K
477 -12.34 afterPrefix ((**12.34)) K
478 -12.34 beforeSuffix ((12.34**)) K
479 -12.34 afterSuffix ((12.34))** K
480
481 test affix setters
482 set locale fr_FR
483 set currency EUR
484 set pattern 0.00
485 begin
486 format positivePrefix positiveSuffix negativePrefix negativeSuffix output
487 12.34 % %12,34
488 12.34 \u00a4\u00a4 12,34\u00a4\u00a4
489 12.34 - + 12,34
490 -12.34 - + -12,34+
491 -12.34 \u00a4 \u00a412,34
492 12.34 \u00a4 12,34
493 -12.34 % 12,34%
494 12.34 % 12,34
495
496 test more affix setters
497 set locale fr_FR
498 set pattern %0.00
499 begin
500 format positivePrefix negativePrefix output
501 0.648 booya cooya booya64,80
502
503 test nan and infinity
504 set locale en_US
505 set pattern [0.00];(#)
506 begin
507 format output breaks
508 Inf [\u221e] K
509 -Inf (\u221e) K
510 NaN NaN K
511
512 test nan and infinity with multiplication
513 set locale en
514 set multiplier 100
515 begin
516 format output breaks
517 Inf \u221e
518 -Inf -\u221e
519 NaN NaN K
520
521 test nan and infinity with padding
522 set locale en_US
523 set pattern $$$0.00$
524 set formatWidth 7
525 begin
526 format padPosition output breaks
527 Inf beforePrefix $$$\u221e$ K
528 Inf afterPrefix $$$ \u221e$ K
529 Inf beforeSuffix $$$\u221e $ K
530 Inf afterSuffix $$$\u221e$ K
531 NaN beforePrefix NaN K
532 NaN afterPrefix NaN K
533 NaN beforeSuffix NaN K
534 NaN afterSuffix NaN K
535
536 test apply formerly localized patterns
537 begin
538 // documentation says localizedPattern is not supported, change to pattern
539 locale pattern format output breaks
540 en #0% 0.4376 44%
541 // This next test breaks JDK. JDK doesn't multiply by 100.
542 // It also is now broken in ICU4J until #10368 is fixed.
543 fa \u0025\u00a0\u0023\u0030 0.4376 \u200e\u066a\u00a0\u06f4\u06f4 JK
544
545 test toPattern
546 set locale en
547 begin
548 pattern toPattern breaks
549 // JDK doesn't support any patterns with padding or both negative prefix and suffix
550 // Breaks ICU4J See ticket 11671
551 **0,000 **0,000 JK
552 **##0,000 **##0,000 K
553 **###0,000 **###0,000 K
554 **####0,000 **#,##0,000 K
555 ###,000. #,000.
556 0,000 #0,000
557 .00 #.00
558 000 #000
559 000,000 #,000,000
560 pp#,000 pp#,000
561 00.## #00.##
562 #,#00.025 #,#00.025
563 // No secondary grouping in JDK
564 #,##,###.02500 #,##,###.02500 K
565 pp#,000;(#) pp#,000;(#,000) K
566 **####,##,##0.0##;(#) **#,##,##,##0.0##;**(##,##,##0.0##) K
567 // No significant digits in JDK
568 @@### @@### K
569 @,@#,### @,@#,### K
570 0.00E0 0.00E0
571 @@@##E0 @@@##E0 K
572 ###0.00#E0 ###0.00#E0
573 ##00.00#E0 ##00.00#E0
574 0.00E+00 0.00E+00 K
575 000.00E00 000.00E00
576 ###0.00#E00 ###0.00#E00
577
578 test parse
579 set locale en
580 set pattern +#,##0.0###;(#)
581 begin
582 parse output breaks
583 +5,347.25 5347.25
584 +5,347,.25 5347.25
585 +5,347, 5347
586 +5347,,, 5347
587 +5347,,,d8 5347
588 (5,347.25) -5347.25
589 // J requires prefix and suffix for lenient parsing, but C doesn't
590 5,347.25 5347.25 JK
591 (5,347.25 -5347.25 J
592 -5,347.25 fail
593 +3.52E4 35200
594 (34.8E-3) -0.0348
595 // JDK stops parsing at the spaces. JDK doesn't see space as a grouping separator
596 (34 25E-1) -342.5 K
597 (34,,25E-1) -342.5
598 // J doesn't allow trailing separators before E but C does
599 (34,,25,E-1) -342.5 J
600 (34 25 E-1) -342.5 JK
601 (34,,25 E-1) -3425 J
602 // Spaces are not allowed after exponent symbol
603 // C parses up to the E but J bails
604 (34 25E -1) -3425 JK
605 +3.52EE4 3.52
606 +1,234,567.8901 1234567.8901
607 +1,23,4567.8901 1234567.8901
608 +1,23,4567.89,01 1234567.89
609 +1,23,456.78.9 123456.78
610 +12.34,56 12.34
611 +79,,20,3 79203
612 +79 20 3 79203 K
613 // Parsing stops at comma as it is different from other separators
614 +79 20,3 7920 K
615 +79,,20 3 7920
616 + 79 79 K
617 +,79,,20,3 79203
618 +7920d3 7920
619 // Whitespace immediately after prefix doesn't count as digit separator
620 // in C but is does in J
621 + ,79,,20,3 79203 JK
622 ( 19 45) -1945 K
623 // C allows trailing separators when there is a prefix and suffix.
624 // J allows trailing separators only when there is just a prefix.
625 // In this case, J just bails
626 ( 19 45 ) -1945 JK
627 (,,19,45) -1945
628 // C parses to the space, but J bails
629 (,,19 45) -19 J
630 // J bails b/c comma different separator than space. C doesn't treat leading spaces
631 // as a separator.
632 ( 19,45) -1945 JK
633 // J bails. Doesn't allow trailing separators when there is prefix and suffix.
634 (,,19,45,) -1945 J
635 // J bails on next 4 because J doesn't allow letters inside prefix and suffix.
636 // C will parse up to the letter.
637 (,,19,45,d1) -1945 J
638 (,,19,45d1) -1945 J
639 ( 19 45 d1) -1945 JK
640 ( 19 45d1) -1945 JK
641 // J does allow trailing separator before a decimal point
642 (19,45,.25) -1945.25
643 // 2nd decimal points are ignored
644 +4.12.926 4.12
645
646 test parse suffix
647 set locale en
648 set pattern #,##0.0###+;#-
649 begin
650 parse output breaks
651 // C sees this as -3426, don't understand why
652 3426 -3426 JK
653 3426+ 3426
654 // J bails, but JDK will parse up to the space and get 34.
655 // C sees -34
656 34 d1+ -34 JK
657 // JDK sees this as -1234 for some reason
658 // J bails b/c of trailing separators
659 // C parses until trailing separators, but sees -1234
660 1,234,,,+ -1234 JK
661 1,234- -1234
662 // J bails because of trailing separators
663 1,234,- -1234 J
664 // J bails here too
665 1234 - -1234 J
666
667
668
669 test parse strict
670 set locale en
671 set pattern +#,##0.0###;(#)
672 set lenient 0
673 begin
674 parse output breaks
675 +123d5 123
676 +5347.25 5347.25
677 // separators in wrong place cause failure, no separators ok.
678 +5,347.25 5347.25
679 (5347.25) -5347.25
680 (5,347.25) -5347.25
681 // JDK does allow separators in the wrong place and parses as -5347.25
682 (53,47.25) fail K
683 // strict requires prefix or suffix
684 5,347.25 fail
685 +3.52E4 35200
686 (34.8E-3) -0.0348
687 (3425E-1) -342.5
688 // Strict doesn't allow separators in sci notation.
689 (3,425) -3425
690 // JDK allows separators in sci notation and parses as -342.5
691 (3,425E-1) fail K
692 // Both prefix and suffix needed for strict.
693 // JDK accepts this and parses as -342.5
694 (3425E-1 fail K
695 +3.52EE4 3.52
696 +1,234,567.8901 1234567.8901
697 // With strict digit separators don't have to be the right type
698 // JDK doesn't acknowledge space as a separator
699 +1 234 567.8901 1234567.8901 K
700 // In general the grouping separators have to match their expected
701 // location exactly. The only exception is when string being parsed
702 // have no separators at all.
703 +1,234,567.8901 1234567.8901
704 // JDK doesn't require separators to be in the right place
705 +1,23,4567.8901 fail K
706 +1234,567.8901 fail K
707 +1,234567.8901 fail K
708 +1234567.8901 1234567.8901
709 // Comma after decimal means parse to a comma
710 +123,456.78,9 123456.78
711 // A decimal after a decimal means bail
712 // JDK parses as 123456.78
713 +123,456.78.9 fail K
714 +79 79
715 +79 79
716 + 79 fail
717 // JDK parses as -1945
718 (1,945d1) fail K
719
720 test parse integer only
721 set locale en
722 set pattern 0.00
723 set parseIntegerOnly 1
724 begin
725 parse output breaks
726 35 35
727 +35 fail
728 -35 -35
729 2.63 2
730 -39.99 -39
731
732 test parse no exponent flag
733 set pattern 0
734 set locale en
735 begin
736 parseNoExponent parse output breaks
737 // JDK doesn't allow lowercase exponent but ICU4J and ICU4C do.
738 0 5e2 500 K
739 0 5.3E2 530
740 // See ticket 11725
741 1 5e2 5 J
742 1 5.3E2 5.3 JK
743
744 test parse currency fail
745 set pattern 0
746 set locale en
747 begin
748 parse output outputCurrency breaks
749 // See ticket 11735
750 53.45 fail USD J
751
752 test parse strange prefix
753 set locale en
754 set positivePrefix dd
755 set negativePrefix ddd
756 begin
757 parse output
758 dd4582 4582
759 ddd4582 -4582
760
761 test parse strange suffix
762 set locale en
763 set positiveSuffix dd
764 set negativePrefix
765 set negativeSuffix ddd
766 begin
767 parse output
768 4582dd 4582
769 4582ddd -4582
770
771 test really strange suffix
772 set locale en
773 set positiveSuffix 9K
774 set negativePrefix
775 set negativeSuffix 9N
776 begin
777 parse output breaks
778 // C consumes the '9' as a digit and assumes number is negative
779 // J and JDK bail
780 // 6549K 654 CJK
781 // C consumes the '9' as a digit and assumes number is negative
782 // J and JDK bail
783 // 6549N -654 CJK
784
785 test really strange prefix
786 set locale en
787 set positivePrefix 82
788 set negativePrefix 28
789 begin
790 parse output
791 8245 45
792 2845 -45
793
794 test select
795 set locale sr
796 begin
797 format pattern plural
798 Inf 0 other
799 -Inf 0 other
800 NaN 0 other
801 Inf 0.0 other
802 -Inf 0.0 other
803 NaN 0.0 other
804 1 0 one
805 1 0.0 other
806 2 0 few
807 2 0.0 other
808 2 0E0 other
809 5.1 0.0 one
810 5.09 0.0 one
811
812 test parse currency ISO
813 set pattern 0.00 \u00a4\u00a4;(#) \u00a4\u00a4
814 set locale en_US
815 begin
816 parse output outputCurrency breaks
817 $53.45 53.45 USD
818 53.45 USD 53.45 USD
819 USD 53.45 53.45 USD J
820 53.45USD fail USD
821 USD53.45 53.45 USD
822 (7.92) USD -7.92 USD
823 (7.92) EUR -7.92 EUR
824 (7.926) USD -7.926 USD
825 (7.926 USD) fail USD
826 (USD 7.926) fail USD
827 USD (7.926) fail USD
828 USD (7.92) fail USD
829 (7.92)USD fail USD
830 USD(7.92) fail USD
831 (8) USD -8 USD
832 -8 USD fail USD
833 67 USD 67 USD
834 53.45$ fail USD
835 US Dollars 53.45 53.45 USD J
836 53.45 US Dollars 53.45 USD
837 US Dollar 53.45 53.45 USD J
838 53.45 US Dollar 53.45 USD
839 US Dollars53.45 53.45 USD
840 53.45US Dollars fail USD
841 US Dollar53.45 53.45 USD
842 US Dollat53.45 fail USD
843 53.45US Dollar fail USD
844 US Dollars (53.45) fail USD
845 (53.45) US Dollars -53.45 USD
846 US Dollar (53.45) fail USD
847 (53.45) US Dollar -53.45 USD
848 US Dollars(53.45) fail USD
849 (53.45)US Dollars fail USD
850 US Dollar(53.45) fail USD
851 US Dollat(53.45) fail USD
852 (53.45)US Dollar fail USD
853
854
855 test parse currency ISO negative
856 set pattern 0.00 \u00a4\u00a4;-# \u00a4\u00a4
857 set locale en_US
858 begin
859 parse output outputCurrency breaks
860 $53.45 53.45 USD
861 53.45 USD 53.45 USD
862 USD 53.45 53.45 USD J
863 53.45USD fail USD
864 USD53.45 53.45 USD
865 -7.92 USD -7.92 USD
866 -7.92 EUR -7.92 EUR
867 -7.926 USD -7.926 USD
868 USD -7.926 fail USD
869 -7.92USD fail USD
870 USD-7.92 fail USD
871 -8 USD -8 USD
872 67 USD 67 USD
873 53.45$ fail USD
874 US Dollars 53.45 53.45 USD J
875 53.45 US Dollars 53.45 USD
876 US Dollar 53.45 53.45 USD J
877 53.45 US Dollar 53.45 USD
878 US Dollars53.45 53.45 USD
879 53.45US Dollars fail USD
880 US Dollar53.45 53.45 USD
881 US Dollat53.45 fail USD
882 53.45US Dollar fail USD
883
884
885 test parse currency long
886 set pattern 0.00 \u00a4\u00a4\u00a4;(#) \u00a4\u00a4\u00a4
887 set locale en_US
888 begin
889 parse output outputCurrency breaks
890 $53.45 53.45 USD
891 53.45 USD 53.45 USD
892 USD 53.45 53.45 USD J
893 // See ticket 11735
894 53.45USD fail USD J
895 USD53.45 53.45 USD
896 (7.92) USD -7.92 USD
897 (7.926) USD -7.926 USD
898 (7.926 USD) fail USD
899 (USD 7.926) fail USD
900 USD (7.926) fail USD
901 USD (7.92) fail USD
902 (7.92)USD fail USD
903 USD(7.92) fail USD
904 (8) USD -8 USD
905 // See ticket 11735
906 -8 USD fail USD J
907 67 USD 67 USD
908 // See ticket 11735
909 53.45$ fail USD J
910 US Dollars 53.45 53.45 USD J
911 53.45 US Dollars 53.45 USD
912 US Dollar 53.45 53.45 USD J
913 53.45 US Dollar 53.45 USD
914 US Dollars53.45 53.45 USD
915 // See ticket 11735
916 53.45US Dollars fail USD J
917 US Dollar53.45 53.45 USD
918 US Dollat53.45 fail USD
919 // See ticket 11735
920 53.45US Dollar fail USD J
921
922
923 test parse currency short
924 set pattern 0.00 \u00a4;(#) \u00a4
925 set locale en_US
926 begin
927 parse output outputCurrency breaks
928 $53.45 53.45 USD
929 53.45 USD 53.45 USD
930 USD 53.45 53.45 USD J
931 53.45USD fail USD
932 USD53.45 53.45 USD
933 (7.92) USD -7.92 USD
934 (7.926) USD -7.926 USD
935 (7.926 USD) fail USD
936 (USD 7.926) fail USD
937 USD (7.926) fail USD
938 USD (7.92) fail USD
939 (7.92)USD fail USD
940 USD(7.92) fail USD
941 (8) USD -8 USD
942 -8 USD fail USD
943 67 USD 67 USD
944 53.45$ fail USD
945 US Dollars 53.45 53.45 USD J
946 53.45 US Dollars 53.45 USD
947 US Dollar 53.45 53.45 USD J
948 53.45 US Dollar 53.45 USD
949 US Dollars53.45 53.45 USD
950 53.45US Dollars fail USD
951 US Dollar53.45 53.45 USD
952 US Dollat53.45 fail USD
953 53.45US Dollar fail USD
954
955
956 test parse currency short prefix
957 set pattern \u00a40.00;(\u00a4#)
958 set locale en_US
959 begin
960 parse output outputCurrency breaks
961 $53.45 53.45 USD
962 53.45 USD fail USD
963 USD 53.45 53.45 USD J
964 53.45USD fail USD
965 USD53.45 53.45 USD
966 (7.92) USD fail USD
967 (7.926) USD fail USD
968 (7.926 USD) fail USD
969 (USD 7.926) -7.926 USD J
970 USD (7.926) fail USD
971 USD (7.92) fail USD
972 (7.92)USD fail USD
973 USD(7.92) fail USD
974 (8) USD fail USD
975 -8 USD fail USD
976 67 USD fail USD
977 53.45$ fail USD
978 US Dollars 53.45 53.45 USD J
979 53.45 US Dollars 53.45 USD
980 US Dollar 53.45 53.45 USD J
981 53.45 US Dollar 53.45 USD
982 US Dollars53.45 53.45 USD
983 53.45US Dollars fail USD
984 US Dollar53.45 53.45 USD
985 53.45US Dollar fail USD
986
987 test format foreign currency
988 set locale fa_IR
989 begin
990 pattern format output breaks
991 \u00a4\u00a4\u00a4 0.00;\u00a4\u00a4\u00a4 # 1235 \u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 K
992 \u00a4\u00a4 0.00;\u00a4\u00a4 -# 1235 IRR \u06F1\u06F2\u06F3\u06F5 K
993 \u00a4 0.00;\u00a4 -# 1235 \u0631\u06cc\u0627\u0644 \u06F1\u06F2\u06F3\u06F5 K
994
995 test parse foreign currency symbol
996 set pattern \u00a4 0.00;\u00a4 -#
997 set locale fa_IR
998 begin
999 parse output outputCurrency
1000 \u0631\u06cc\u0627\u0644 \u06F1\u06F2\u06F3\u06F5 1235 IRR
1001 IRR \u06F1\u06F2\u06F3\u06F5 1235 IRR
1002 \u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR
1003 IRR 1235 1235 IRR
1004 \u0631\u06cc\u0627\u0644 1235 1235 IRR
1005 \u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 1235 1235 IRR
1006
1007 test parse foreign currency ISO
1008 set pattern \u00a4\u00a4 0.00;\u00a4\u00a4 -#
1009 set locale fa_IR
1010 begin
1011 parse output outputCurrency
1012 \u0631\u06cc\u0627\u0644 \u06F1\u06F2\u06F3\u06F5 1235 IRR
1013 IRR \u06F1\u06F2\u06F3\u06F5 1235 IRR
1014 \u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR
1015 IRR 1235 1235 IRR
1016 \u0631\u06cc\u0627\u0644 1235 1235 IRR
1017 \u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 1235 1235 IRR
1018
1019 test parse foreign currency full
1020 set pattern \u00a4\u00a4\u00a4 0.00;\u00a4\u00a4\u00a4 -#
1021 set locale fa_IR
1022 begin
1023 parse output outputCurrency
1024 \u0631\u06cc\u0627\u0644 \u06F1\u06F2\u06F3\u06F5 1235 IRR
1025 IRR \u06F1\u06F2\u06F3\u06F5 1235 IRR
1026 \u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR
1027 IRR 1235 1235 IRR
1028 \u0631\u06cc\u0627\u0644 1235 1235 IRR
1029 \u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 1235 1235 IRR
1030
1031 test parse currency with foreign symbols symbol english
1032 set pattern \u00a4 0.00;\u00a4 (#)
1033 set locale en_US
1034 begin
1035 parse output outputCurrency
1036 EUR 7.82 7.82 EUR
1037 \u20ac 7.82 7.82 EUR
1038 Euro 7.82 7.82 EUR
1039 Euros 7.82 7.82 EUR
1040
1041 test parse currency with foreign symbols ISO english
1042 set pattern \u00a4\u00a4 0.00;\u00a4\u00a4 (#)
1043 set locale en_US
1044 begin
1045 parse output outputCurrency
1046 EUR 7.82 7.82 EUR
1047 \u20ac 7.82 7.82 EUR
1048 Euro 7.82 7.82 EUR
1049 Euros 7.82 7.82 EUR
1050
1051 test parse currency with foreign symbols full english
1052 set pattern \u00a4\u00a4\u00a4 0.00;\u00a4\u00a4\u00a4 (#)
1053 set locale en_US
1054 begin
1055 parse output outputCurrency
1056 EUR 7.82 7.82 EUR
1057 \u20ac 7.82 7.82 EUR
1058 Euro 7.82 7.82 EUR
1059 Euros 7.82 7.82 EUR
1060
1061 test parse currency ISO strict
1062 set pattern 0.00 \u00a4\u00a4;(#) \u00a4\u00a4
1063 set locale en_US
1064 set lenient 0
1065 begin
1066 parse output outputCurrency breaks
1067 $53.45 53.45 USD
1068 53.45 USD 53.45 USD
1069 USD 53.45 fail USD
1070 53.45USD fail USD
1071 USD53.45 53.45 USD
1072 (7.92) USD -7.92 USD
1073 (7.92) EUR -7.92 EUR
1074 (7.926) USD -7.926 USD
1075 (7.926 USD) fail USD
1076 (USD 7.926) fail USD
1077 USD (7.926) fail USD
1078 USD (7.92) fail USD
1079 (7.92)USD fail USD
1080 USD(7.92) fail USD
1081 (8) USD -8 USD
1082 -8 USD fail USD
1083 67 USD 67 USD
1084 53.45$ fail USD
1085 US Dollars 53.45 fail USD
1086 53.45 US Dollars 53.45 USD
1087 US Dollar 53.45 fail USD
1088 53.45 US Dollar 53.45 USD
1089 US Dollars53.45 53.45 USD
1090 53.45US Dollars fail USD
1091 US Dollar53.45 53.45 USD
1092 US Dollat53.45 fail USD
1093 53.45US Dollar fail USD
1094 US Dollars (53.45) fail USD
1095 (53.45) US Dollars -53.45 USD
1096 US Dollar (53.45) fail USD
1097 (53.45) US Dollar -53.45 USD
1098 US Dollars(53.45) fail USD
1099 (53.45)US Dollars fail USD
1100 US Dollar(53.45) fail USD
1101 US Dollat(53.45) fail USD
1102 (53.45)US Dollar fail USD
1103
1104 test ticket 10436
1105 set locale en
1106 set roundingMode ceiling
1107 set minFractionDigits 0
1108 set maxFractionDigits 0
1109 begin
1110 format output breaks
1111 -0.99 -0 JK
1112