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 |