]> git.saurik.com Git - apple/icu.git/blame - icuSources/test/testdata/numberformattestspecification.txt
ICU-59180.0.1.tar.gz
[apple/icu.git] / icuSources / test / testdata / numberformattestspecification.txt
CommitLineData
f3c0d7a5
A
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
2ca993e8
A
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
15test plus sign
16set locale ar
17set pattern +0;-#
18begin
19format output breaks
f3c0d7a5
A
206 \u061C+\u0666 JK
21-6 \u061C-\u0666 JK
2ca993e8
A
22
23test basic patterns
24set locale fr_FR
25set format 1234.567
26begin
27pattern output
28#,##0.## 1\u00a0234,57
290.## 1234,57
300 1235
31#,##0.### 1\u00a0234,567
32###0.###### 1234,567
33###0.0000# 1234,5670
3400000.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
40test minimum and maximum fraction digits
41set locale en
42set minIntegerDigits 2
43set maxIntegerDigits 4
44set minFractionDigits 3
45set maxFractionDigits 5
46begin
47format output
486 06.000
496.000005 06.000
506.000006 06.00001
511002003004005 4005.000
52-1002003004005 -4005.000
5312 12.000
5412345 2345.000
5572.1234 72.1234
56
57test int64
58set locale en
59begin
60format output
611002003004005 1002003004005
62-1002003004005 -1002003004005
63
64test rounding
65set locale fr
66begin
67pattern format output breaks
680.5 1.25 1,0 K
690.5 1.75 2,0 K
700.5 -1.25 -1,0 K
7100.5 -1.75 -02,0 K
724 2.0 0 K
734 6.0 8 K
744 10.0 8 K
752.70 99.0 99,90 K
762.73 272.0 273,00 K
77#,#3.70 104.0 1\u00a003,60 K
78
79test significant digits
80set locale en
81set pattern #,#@,@###
82begin
83format output breaks
847 7.0 K
8523 23 K
86100 100 K
871000 1000 K
8810000 1,0000 K
8910001 1,0001 K
9010001.5 1,0002 K
911234567 1,23,4600 K
92-1234567 -1,23,4600 K
933.14159 3.1416 K
94
95test scientific notation
96set locale fr
97begin
98pattern format output breaks
990.00E0 12345 1,23E4
100000.00E0 12300 123,00E2
101000.0#E0 12300 123,0E2
102000.0#E0 12300.1 123,0E2
103000.0#E0 12301.0 123,01E2
104// JDK does not support exponent signs
105000.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
1130.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
123test percents
124set locale fr
125begin
126pattern format output breaks
1270.0% 0.573 57,3%
128%0.0 0.573 %57,3
129p%p0.0 0.573 p%p57,3
130p'%'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
138test permille
139set locale fr
140begin
141pattern format output breaks
1420.0\u2030 0.573 573,0‰
143\u20300.0 0.573 \u2030573,0
144p\u2030p0.0 0.573 p\u2030p573,0
145p'\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
152test padding
153set locale fr_FR
154begin
155pattern 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
170test padding and currencies
171begin
172locale 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.
175fr JPY \u00a4\u00a4 **#######0 433.22 JPY ****433 JK
176// JDK doesn't correct rounding for currency, shows USD (433
177en USD \u00a4\u00a4 **#######0;\u00a4\u00a4 (#) -433.22 USD (433.22) K
178
179test currencies
180set locale fr
181set format 1234.567
182begin
183pattern 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
190test prefixes and suffixes
191set locale en
192set pattern 0.00+;(#)
193begin
194format output breaks
1957 7.00+
196// JDK does not support negative suffixes
197-3.5 (3.50) K
198
199test minimum grouping digits
200set locale en
201set pattern #,##0
202set minGroupingDigits 2
203begin
204format output breaks
205// min grouping digits not supported in any existing implementation
206// but could be easily added to the new DecimalFormat C code.
2071000 1000 JK
20810000 10,000
209100000 100,000
2101000000 1,000,000
211
212test min max fraction digits
213set locale en
214set pattern #,##0.###
215set format 1234.567
216begin
217minFractionDigits maxFractionDigits output
2180 0 1,235
2190 2 1,234.57
2204 5 1,234.5670
221
222test min max integer digits
223set locale en
224set pattern #,##0.###
225set format 1234.567
226begin
227minIntegerDigits maxIntegerDigits output
2280 0 .567
2290 3 234.567
2305 5 01,234.567
231
232test min max fraction digits scientific
233set locale en
234set pattern #E0
235set format 299792458.0
236begin
237minIntegerDigits maxIntegerDigits minFractionDigits maxFractionDigits output breaks
238// JDK gives .3E9 instead of unlimited precision.
2390 1 0 0 2.99792458E8 K
2401 1 0 0 3E8
241// JDK gives E0 instead of allowing for unlimited precision
2420 0 0 0 2.99792458E8 K
243// JDK gives .299792E9
2440 1 0 5 2.9979E8 K
245// JDK gives 300E6
2460 3 0 0 299.792458E6 K
247// JDK gives 299.8E6 (maybe maxInt + maxFrac instead of minInt + maxFrac)?
2480 3 0 1 300E6 K
249// JDK gives 299.7925E6
2502 3 0 4 299.792E6 K
251// JDK gives 299.79246E6
2522 3 0 5 299.7925E6 K
2533 3 0 5 299.79246E6
2543 3 0 4 299.7925E6
2552 2 0 3 29.979E7
2564 4 0 0 2998E5
2570 0 1 5 .29979E9
258// JDK gives E0
2590 0 1 0 2.99792458E8 K
260// JDK gives .2998E9
2610 0 0 4 2.998E8 K
262// JDK uses 8 + 6 for significant digits instead of 2 + 6
2632 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.
2672 9 1 6 29.979246E7 K
268
269test significant digits scientific
270set locale en
271set pattern #E0
272set format 290000000.0
273begin
274minSigDigits maxSigDigits output breaks
2750 1 3E8 K
2760 2 2.9E8 K
2770 3 2.9E8 K
2781 1 3E8 K
2791 2 2.9E8 K
2801 3 2.9E8 K
2812 2 2.9E8 K
2822 3 2.9E8 K
2833 3 2.90E8 K
2843 4 2.90E8 K
285
286test min max fraction digits scientific 2
287set locale en
288set pattern #E0
289set format 29979245.0
290begin
291minIntegerDigits maxIntegerDigits minFractionDigits maxFractionDigits output breaks
292// JDK gives E0
2930 0 0 0 2.9979245E7 K
294// JDK gives .3E8
2950 1 0 0 2.9979245E7 K
296// JDK gives 2998E4.
2970 4 0 0 2997.9245E4 K
298
299test ticket 11524
300set locale en
301set pattern #,##0.###
302begin
303format maxIntegerDigits output
304123 1 3
305123 -2147483648 0
30612345 1 5
30712345 -2147483648 0
3085.3 1 5.3
3095.3 -2147483648 .3
310
311test patterns with zero
312set locale en
313set format 0
314begin
315pattern output
316#.# 0
317#. 0.
318.# .0
319# 0
32000.000E00 00.000E00
3210.####E0 0E0
322##0.######E000 0E000
323
324test significant digits manually set
325set locale en_US
326set pattern 0.0
327set useSigDigits 1
328set minSigDigits 3
329set maxSigDigits 5
330begin
331format output breaks
3320.0012 0.00120 K
3330.00123 0.00123 K
3340.001234 0.001234 K
3350.0012345 0.0012345 K
3360.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
343test grouping used setters
344set locale en_US
345set pattern #,##0
346set format 12345
347begin
348output useGrouping
34912,345
35012,345 1
35112345 0
352
353test grouping setters
354set locale en_US
355set pattern 0
356set format 123456789
357set useGrouping 1
358begin
359output grouping breaks grouping2 minGroupingDigits
3601,2345,6789 4
3611,23,45,6789 4 K 2
3621,23,45,6789 4 K 2 2
363123,456789 6 K 6 3
364123456789 6 JK 6 4
365
366test multiplier setters
367set locale en_US
368begin
369format multiplier output breaks
37023 -12 -276
37123 -1 -23
372// ICU4J and JDK throw exception on zero multiplier. ICU4C does not.
37323 0 23 JK
37423 1 23
37523 12 276
376-23 12 -276
377-23 -12 276
378
379test rounding setters
380set locale en_US
381set pattern 0.0#
382set roundingIncrement 0.25
383begin
384format output breaks
385-0.35 -0.25 K
3860.35 0.25 K
3870.39 0.5 K
3880.62 0.5 K
3890.63 0.75 K
390
391test padding setters
392set locale en_US
393set pattern bill0
394set format 1357
395begin
396padCharacter formatWidth output breaks
397* 8 bill1357 K
398* 9 *bill1357 K
399^ 10 ^^bill1357 K
400
401test use scientific setter
402set locale en_US
403set pattern 0.00
404set format 186283
405begin
406output breaks useScientific
407186283.00
4081.86E5 K 1
409186283.00 K 0
410
411test rounding mode setters
412set locale en_US
413set pattern 0.#
414set roundingIncrement 0.5
415begin
416format roundingMode output breaks
4171.24 halfUp 1 K
4181.25 halfUp 1.5 K
4191.25 halfDown 1 K
4201.26 halfDown 1.5 K
4211.25 halfEven 1 K
422-1.01 up -1.5 K
423-1.49 down -1 K
4241.01 up 1.5 K
4251.49 down 1 K
426-1.01 ceiling -1 K
427-1.49 floor -1.5 K
428
429test currency usage setters
430// TODO: Find a country and currency where standard and cash differ
431set locale CH
432set currency CHF
433set pattern \u00a4\u00a4 0
434begin
435format currencyUsage output breaks
4360.37 standard CHF 0.37 K
437// TODO: Get the rounding data into ICU4C and ICU4J
4380.37 cash CHF 0.35 CJK
439
440test exponent parameter setters
441set locale en_US
442set pattern 0.##E0
443set format 299792458
444begin
445decimalSeparatorAlwaysShown exponentSignAlwaysShown minimumExponentDigits output breaks
4460 0 2 3E08 K
4470 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
4521 0 2 3.E08 JK
4531 1 3 3.E+008 JK
f3c0d7a5 4541 0 1 3.E8
2ca993e8
A
4550 0 1 3E8
456
457test exponent decimalSeparatorAlwaysShown default
458set locale en_US
459set pattern 0.##E0
460begin
461format output breaks decimalSeparatorAlwaysShown
462// decimalSeparatorAlwaysShown off by default
463299792458 3E8
464299000000 2.99E8
465299792458 3.E8 J 1
466
467test pad position setters
468set locale en_US
469set pattern **[#####0.##];((#))
470begin
471format padPosition output breaks
47212.34 beforePrefix ****[12.34] K
47312.34 afterPrefix [****12.34] K
47412.34 beforeSuffix [12.34****] K
47512.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
481test affix setters
482set locale fr_FR
483set currency EUR
484set pattern 0.00
485begin
486format positivePrefix positiveSuffix negativePrefix negativeSuffix output
48712.34 % %12,34
48812.34 \u00a4\u00a4 12,34\u00a4\u00a4
48912.34 - + 12,34
490-12.34 - + -12,34+
491-12.34 \u00a4 \u00a412,34
49212.34 \u00a4 12,34
493-12.34 % 12,34%
49412.34 % 12,34
495
496test more affix setters
497set locale fr_FR
498set pattern %0.00
499begin
500format positivePrefix negativePrefix output
5010.648 booya cooya booya64,80
502
503test nan and infinity
504set locale en_US
505set pattern [0.00];(#)
506begin
507format output breaks
508Inf [\u221e] K
509-Inf (\u221e) K
510NaN NaN K
511
512test nan and infinity with multiplication
513set locale en
514set multiplier 100
515begin
516format output breaks
517Inf \u221e
518-Inf -\u221e
519NaN NaN K
520
521test nan and infinity with padding
522set locale en_US
523set pattern $$$0.00$
524set formatWidth 7
525begin
526format padPosition output breaks
527Inf beforePrefix $$$\u221e$ K
528Inf afterPrefix $$$ \u221e$ K
529Inf beforeSuffix $$$\u221e $ K
530Inf afterSuffix $$$\u221e$ K
531NaN beforePrefix NaN K
532NaN afterPrefix NaN K
533NaN beforeSuffix NaN K
534NaN afterSuffix NaN K
535
f3c0d7a5 536test apply formerly localized patterns
2ca993e8 537begin
f3c0d7a5
A
538// documentation says localizedPattern is not supported, change to pattern
539locale pattern format output breaks
540en #0% 0.4376 44%
2ca993e8 541// This next test breaks JDK. JDK doesn't multiply by 100.
f3c0d7a5
A
542// It also is now broken in ICU4J until #10368 is fixed.
543fa \u0025\u00a0\u0023\u0030 0.4376 \u200e\u066a\u00a0\u06f4\u06f4 JK
2ca993e8
A
544
545test toPattern
546set locale en
547begin
548pattern 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.
5560,000 #0,000
557.00 #.00
558000 #000
559000,000 #,000,000
560pp#,000 pp#,000
56100.## #00.##
562#,#00.025 #,#00.025
563// No secondary grouping in JDK
564#,##,###.02500 #,##,###.02500 K
565pp#,000;(#) pp#,000;(#,000) K
566**####,##,##0.0##;(#) **#,##,##,##0.0##;**(##,##,##0.0##) K
567// No significant digits in JDK
568@@### @@### K
569@,@#,### @,@#,### K
5700.00E0 0.00E0
571@@@##E0 @@@##E0 K
572###0.00#E0 ###0.00#E0
573##00.00#E0 ##00.00#E0
5740.00E+00 0.00E+00 K
575000.00E00 000.00E00
576###0.00#E00 ###0.00#E00
577
578test parse
579set locale en
580set pattern +#,##0.0###;(#)
581begin
582parse 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
5905,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
646test parse suffix
647set locale en
648set pattern #,##0.0###+;#-
649begin
650parse output breaks
651// C sees this as -3426, don't understand why
6523426 -3426 JK
6533426+ 3426
654// J bails, but JDK will parse up to the space and get 34.
655// C sees -34
65634 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
6601,234,,,+ -1234 JK
6611,234- -1234
662// J bails because of trailing separators
6631,234,- -1234 J
664// J bails here too
6651234 - -1234 J
666
667
668
669test parse strict
670set locale en
671set pattern +#,##0.0###;(#)
672set lenient 0
673begin
674parse 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
6845,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
720test parse integer only
721set locale en
722set pattern 0.00
723set parseIntegerOnly 1
724begin
725parse output breaks
72635 35
727+35 fail
728-35 -35
7292.63 2
730-39.99 -39
731
732test parse no exponent flag
733set pattern 0
734set locale en
735begin
736parseNoExponent parse output breaks
737// JDK doesn't allow lowercase exponent but ICU4J and ICU4C do.
7380 5e2 500 K
7390 5.3E2 530
740// See ticket 11725
7411 5e2 5 J
7421 5.3E2 5.3 JK
743
744test parse currency fail
745set pattern 0
746set locale en
747begin
748parse output outputCurrency breaks
749// See ticket 11735
75053.45 fail USD J
751
752test parse strange prefix
753set locale en
754set positivePrefix dd
755set negativePrefix ddd
756begin
757parse output
758dd4582 4582
759ddd4582 -4582
760
761test parse strange suffix
762set locale en
763set positiveSuffix dd
764set negativePrefix
765set negativeSuffix ddd
766begin
767parse output
7684582dd 4582
7694582ddd -4582
770
771test really strange suffix
772set locale en
773set positiveSuffix 9K
774set negativePrefix
775set negativeSuffix 9N
776begin
777parse 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
785test really strange prefix
786set locale en
787set positivePrefix 82
788set negativePrefix 28
789begin
790parse output
7918245 45
7922845 -45
793
794test select
795set locale sr
796begin
797format pattern plural
798Inf 0 other
799-Inf 0 other
800NaN 0 other
801Inf 0.0 other
802-Inf 0.0 other
803NaN 0.0 other
8041 0 one
8051 0.0 other
8062 0 few
8072 0.0 other
8082 0E0 other
8095.1 0.0 one
8105.09 0.0 one
811
812test parse currency ISO
813set pattern 0.00 \u00a4\u00a4;(#) \u00a4\u00a4
814set locale en_US
815begin
816parse output outputCurrency breaks
817$53.45 53.45 USD
81853.45 USD 53.45 USD
819USD 53.45 53.45 USD J
82053.45USD fail USD
821USD53.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
827USD (7.926) fail USD
828USD (7.92) fail USD
829(7.92)USD fail USD
830USD(7.92) fail USD
831(8) USD -8 USD
832-8 USD fail USD
83367 USD 67 USD
83453.45$ fail USD
835US Dollars 53.45 53.45 USD J
83653.45 US Dollars 53.45 USD
837US Dollar 53.45 53.45 USD J
83853.45 US Dollar 53.45 USD
839US Dollars53.45 53.45 USD
84053.45US Dollars fail USD
841US Dollar53.45 53.45 USD
842US Dollat53.45 fail USD
84353.45US Dollar fail USD
844US Dollars (53.45) fail USD
845(53.45) US Dollars -53.45 USD
846US Dollar (53.45) fail USD
847(53.45) US Dollar -53.45 USD
848US Dollars(53.45) fail USD
849(53.45)US Dollars fail USD
850US Dollar(53.45) fail USD
851US Dollat(53.45) fail USD
852(53.45)US Dollar fail USD
853
854
855test parse currency ISO negative
856set pattern 0.00 \u00a4\u00a4;-# \u00a4\u00a4
857set locale en_US
858begin
859parse output outputCurrency breaks
860$53.45 53.45 USD
86153.45 USD 53.45 USD
862USD 53.45 53.45 USD J
86353.45USD fail USD
864USD53.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
868USD -7.926 fail USD
869-7.92USD fail USD
870USD-7.92 fail USD
871-8 USD -8 USD
87267 USD 67 USD
87353.45$ fail USD
874US Dollars 53.45 53.45 USD J
87553.45 US Dollars 53.45 USD
876US Dollar 53.45 53.45 USD J
87753.45 US Dollar 53.45 USD
878US Dollars53.45 53.45 USD
87953.45US Dollars fail USD
880US Dollar53.45 53.45 USD
881US Dollat53.45 fail USD
88253.45US Dollar fail USD
883
884
885test parse currency long
886set pattern 0.00 \u00a4\u00a4\u00a4;(#) \u00a4\u00a4\u00a4
887set locale en_US
888begin
889parse output outputCurrency breaks
890$53.45 53.45 USD
89153.45 USD 53.45 USD
892USD 53.45 53.45 USD J
893// See ticket 11735
89453.45USD fail USD J
895USD53.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
900USD (7.926) fail USD
901USD (7.92) fail USD
902(7.92)USD fail USD
903USD(7.92) fail USD
904(8) USD -8 USD
905// See ticket 11735
906-8 USD fail USD J
90767 USD 67 USD
908// See ticket 11735
90953.45$ fail USD J
910US Dollars 53.45 53.45 USD J
91153.45 US Dollars 53.45 USD
912US Dollar 53.45 53.45 USD J
91353.45 US Dollar 53.45 USD
914US Dollars53.45 53.45 USD
915// See ticket 11735
91653.45US Dollars fail USD J
917US Dollar53.45 53.45 USD
918US Dollat53.45 fail USD
919// See ticket 11735
92053.45US Dollar fail USD J
921
922
923test parse currency short
924set pattern 0.00 \u00a4;(#) \u00a4
925set locale en_US
926begin
927parse output outputCurrency breaks
928$53.45 53.45 USD
92953.45 USD 53.45 USD
930USD 53.45 53.45 USD J
93153.45USD fail USD
932USD53.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
937USD (7.926) fail USD
938USD (7.92) fail USD
939(7.92)USD fail USD
940USD(7.92) fail USD
941(8) USD -8 USD
942-8 USD fail USD
94367 USD 67 USD
94453.45$ fail USD
945US Dollars 53.45 53.45 USD J
94653.45 US Dollars 53.45 USD
947US Dollar 53.45 53.45 USD J
94853.45 US Dollar 53.45 USD
949US Dollars53.45 53.45 USD
95053.45US Dollars fail USD
951US Dollar53.45 53.45 USD
952US Dollat53.45 fail USD
95353.45US Dollar fail USD
954
955
956test parse currency short prefix
957set pattern \u00a40.00;(\u00a4#)
958set locale en_US
959begin
960parse output outputCurrency breaks
961$53.45 53.45 USD
96253.45 USD fail USD
963USD 53.45 53.45 USD J
96453.45USD fail USD
965USD53.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
970USD (7.926) fail USD
971USD (7.92) fail USD
972(7.92)USD fail USD
973USD(7.92) fail USD
974(8) USD fail USD
975-8 USD fail USD
97667 USD fail USD
97753.45$ fail USD
978US Dollars 53.45 53.45 USD J
97953.45 US Dollars 53.45 USD
980US Dollar 53.45 53.45 USD J
98153.45 US Dollar 53.45 USD
982US Dollars53.45 53.45 USD
98353.45US Dollars fail USD
984US Dollar53.45 53.45 USD
98553.45US Dollar fail USD
986
987test format foreign currency
988set locale fa_IR
989begin
990pattern 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
995test parse foreign currency symbol
996set pattern \u00a4 0.00;\u00a4 -#
997set locale fa_IR
998begin
999parse output outputCurrency
1000\u0631\u06cc\u0627\u0644 \u06F1\u06F2\u06F3\u06F5 1235 IRR
1001IRR \u06F1\u06F2\u06F3\u06F5 1235 IRR
1002\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR
1003IRR 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
1007test parse foreign currency ISO
1008set pattern \u00a4\u00a4 0.00;\u00a4\u00a4 -#
1009set locale fa_IR
1010begin
1011parse output outputCurrency
1012\u0631\u06cc\u0627\u0644 \u06F1\u06F2\u06F3\u06F5 1235 IRR
1013IRR \u06F1\u06F2\u06F3\u06F5 1235 IRR
1014\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR
1015IRR 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
1019test parse foreign currency full
1020set pattern \u00a4\u00a4\u00a4 0.00;\u00a4\u00a4\u00a4 -#
1021set locale fa_IR
1022begin
1023parse output outputCurrency
1024\u0631\u06cc\u0627\u0644 \u06F1\u06F2\u06F3\u06F5 1235 IRR
1025IRR \u06F1\u06F2\u06F3\u06F5 1235 IRR
1026\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR
1027IRR 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
1031test parse currency with foreign symbols symbol english
1032set pattern \u00a4 0.00;\u00a4 (#)
1033set locale en_US
1034begin
1035parse output outputCurrency
1036EUR 7.82 7.82 EUR
1037\u20ac 7.82 7.82 EUR
1038Euro 7.82 7.82 EUR
1039Euros 7.82 7.82 EUR
1040
1041test parse currency with foreign symbols ISO english
1042set pattern \u00a4\u00a4 0.00;\u00a4\u00a4 (#)
1043set locale en_US
1044begin
1045parse output outputCurrency
1046EUR 7.82 7.82 EUR
1047\u20ac 7.82 7.82 EUR
1048Euro 7.82 7.82 EUR
1049Euros 7.82 7.82 EUR
1050
1051test parse currency with foreign symbols full english
1052set pattern \u00a4\u00a4\u00a4 0.00;\u00a4\u00a4\u00a4 (#)
1053set locale en_US
1054begin
1055parse output outputCurrency
1056EUR 7.82 7.82 EUR
1057\u20ac 7.82 7.82 EUR
1058Euro 7.82 7.82 EUR
1059Euros 7.82 7.82 EUR
1060
1061test parse currency ISO strict
1062set pattern 0.00 \u00a4\u00a4;(#) \u00a4\u00a4
1063set locale en_US
1064set lenient 0
1065begin
1066parse output outputCurrency breaks
1067$53.45 53.45 USD
106853.45 USD 53.45 USD
1069USD 53.45 fail USD
107053.45USD fail USD
1071USD53.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
1077USD (7.926) fail USD
1078USD (7.92) fail USD
1079(7.92)USD fail USD
1080USD(7.92) fail USD
1081(8) USD -8 USD
1082-8 USD fail USD
108367 USD 67 USD
108453.45$ fail USD
1085US Dollars 53.45 fail USD
108653.45 US Dollars 53.45 USD
1087US Dollar 53.45 fail USD
108853.45 US Dollar 53.45 USD
1089US Dollars53.45 53.45 USD
109053.45US Dollars fail USD
1091US Dollar53.45 53.45 USD
1092US Dollat53.45 fail USD
109353.45US Dollar fail USD
1094US Dollars (53.45) fail USD
1095(53.45) US Dollars -53.45 USD
1096US Dollar (53.45) fail USD
1097(53.45) US Dollar -53.45 USD
1098US Dollars(53.45) fail USD
1099(53.45)US Dollars fail USD
1100US Dollar(53.45) fail USD
1101US Dollat(53.45) fail USD
1102(53.45)US Dollar fail USD
1103
1104test ticket 10436
1105set locale en
1106set roundingMode ceiling
1107set minFractionDigits 0
1108set maxFractionDigits 0
1109begin
1110format output breaks
1111-0.99 -0 JK
1112