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