1// Copyright (c) 2007-2014 International Business Machines 2// Corporation and others. All Rights Reserved. 3format:table(nofallback) { 4 Info { 5 Description { "These are the data driven format tests" } 6 LongDescription { "Data for data driven format tests." } 7 } 8 TestData { 9 TestDateFormatBasic { 10 Info { 11 Description { "Test data for format and parse :" } 12 } 13 Settings { 14 // options: 'format', or 'parse'. One can be omitted if this is a 1 way test. 15 { 16 Type { "date_format" } 17 }, 18 { 19 Type { "date_parse" } 20 }, 21 } 22 Headers { "locale", "zone", "spec", "date", "str"} 23 // locale: locale including calendar type 24 // zone: time zone name, or "" to not explicitly set zone 25 // spec: either 'PATTERN=y mm h' etc, or 'DATE=SHORT,TIME=LONG' 26 // date: either 'MILLIS=####' where #### is millis, 27 // or a calendar spec ERA=0,YEAR=1, etc.. applied to the calendar type specified by the locale 28 // or RELATIVE_MILLIS=### where ### is a signed value which is added to the current millis 29 // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time, 30 // and any other fields present will be set explicitly. 31 // str: the expected unicode string 32 Cases { 33 { 34 "en_US@calendar=gregorian", 35 "", 36 "DATE=SHORT,TIME=SHORT", 37 "ERA=1,YEAR=2007,MONTH=AUGUST,DATE=8,HOUR_OF_DAY=18,MINUTE=54,SECOND=0", 38 "8/8/07, 6:54 PM" 39 }, 40 { 41 "zh_TW@calendar=roc", 42 "", 43 "DATE=LONG", 44 "ERA=1,YEAR=98,MONTH=0,DATE=24", 45 "民國98年1月24日", 46 }, 47 { 48 //民國前2年1月24日 -> 1910-1-24 49 "zh_TW@calendar=roc", 50 "", 51 "DATE=LONG", 52 "ERA=0,YEAR=2,MONTH=0,DATE=24", 53 "民國前2年1月24日", 54 }, 55 } 56 } 57 TestFormatRelative { 58 Info { 59 Description { "relative format :" } 60 } 61 Settings { 62 { 63 Type { "date_format" } 64 }, 65 } 66 Headers { "locale", "zone", "spec", "date", "str"} 67 Cases { 68 { 69 "en_US@calendar=gregorian", 70 "", 71 "DATE=RELATIVE_SHORT", 72 "RELATIVE_ADD:DATE=1", // one day from now 73 "tomorrow" 74 }, 75 { 76 "en_US@calendar=gregorian", 77 "", 78 "DATE=RELATIVE_SHORT", 79 "RELATIVE_MILLIS=0", // today 80 "today" 81 }, 82 { 83 "en_US@calendar=gregorian", 84 "", 85 "DATE=RELATIVE_SHORT", 86 "RELATIVE_ADD:DATE=-1", // one day before now 87 "yesterday" 88 }, 89 // date only, out of relative range 90 { 91 "en_US@calendar=gregorian", 92 "GMT", 93 "DATE=RELATIVE_FULL", 94 "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0", 95 "Monday, October 8, 2012" 96 }, 97 // time only 98 { 99 "en_US@calendar=gregorian", 100 "GMT", 101 "TIME=LONG", 102 "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0", 103 "11:59:00 PM GMT" 104 }, 105 { 106 "en_US@calendar=gregorian", 107 "GMT", 108 "TIME=LONG", 109 "RELATIVE_ADD:DATE=-1,HOUR_OF_DAY=17,MINUTE=0,SECOND=0", // one day before now at specified time 110 "5:00:00 PM GMT" 111 }, 112 // normal formats, combined using 'at' 113 { 114 "en_US@calendar=gregorian", 115 "GMT", 116 "DATE=RELATIVE_FULL,TIME=LONG", 117 "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0", 118 "Monday, October 8, 2012 at 11:59:00 PM GMT" 119 }, 120 // normal formats, combined using ", " 121 { 122 "en_US@calendar=gregorian", 123 "GMT", 124 "DATE=RELATIVE_MEDIUM,TIME=SHORT", 125 "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0", 126 "Oct 8, 2012, 11:59 PM" 127 }, 128 // formats with relative day, combined using 'at' 129 { 130 "en_US@calendar=gregorian", 131 "GMT", 132 "DATE=RELATIVE_FULL,TIME=LONG", 133 "RELATIVE_ADD:DATE=-1,HOUR_OF_DAY=17,MINUTE=0,SECOND=0", // one day before now at specified time 134 "yesterday at 5:00:00 PM GMT" 135 }, 136 // formats with relative day, combined using ", " 137 { 138 "en_US@calendar=gregorian", 139 "GMT", 140 "DATE=RELATIVE_MEDIUM,TIME=SHORT", 141 "RELATIVE_ADD:DATE=-1,HOUR_OF_DAY=17,MINUTE=0,SECOND=0", // one day before now at specified time 142 "yesterday, 5:00 PM" 143 }, 144 // normal formats that have quoted literals, combined 145 { 146 "pt@calendar=gregorian", 147 "GMT", 148 "DATE=RELATIVE_FULL,TIME=LONG", 149 "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0", 150 "segunda-feira, 8 de outubro de 2012 23:59:00 GMT" 151 }, 152 // vi combined formats have time first 153 { 154 "vi@calendar=gregorian", 155 "GMT", 156 "DATE=RELATIVE_LONG,TIME=MEDIUM", 157 "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0", 158 "23:59:00 Ngày 08 tháng 10 năm 2012" 159 }, 160 { 161 "vi@calendar=gregorian", 162 "GMT", 163 "DATE=RELATIVE_LONG,TIME=MEDIUM", 164 "RELATIVE_ADD:DATE=-1,HOUR_OF_DAY=17,MINUTE=0,SECOND=0", // one day before now at specified time 165 "17:00:00 hôm qua" 166 }, 167 // el combines formats using hyphen 168 { 169 "el@calendar=gregorian", 170 "GMT", 171 "DATE=RELATIVE_LONG,TIME=MEDIUM", 172 "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0", 173 "8 Οκτωβρίου 2012 - 11:59:00 μ.μ." 174 }, 175 { 176 "el@calendar=gregorian", 177 "GMT", 178 "DATE=RELATIVE_LONG,TIME=MEDIUM", 179 "RELATIVE_ADD:DATE=-1,HOUR_OF_DAY=17,MINUTE=0,SECOND=0", // one day before now at specified time 180 "χθες - 5:00:00 μ.μ." 181 }, 182 // other tests 183 { 184 "mt_MT@calendar=gregorian", 185 "", 186 "DATE=RELATIVE_SHORT", 187 "RELATIVE_ADD:DATE=1", // one day from now 188 "Għada" 189 }, 190 { 191 "mt_MT@calendar=gregorian", 192 "", 193 "DATE=RELATIVE_SHORT", 194 "RELATIVE_MILLIS=0", // today 195 "Illum" 196 }, 197 { 198 "mt_MT@calendar=gregorian", 199 "", 200 "DATE=RELATIVE_SHORT", 201 "RELATIVE_ADD:DATE=-1", // one day before now 202 "Ilbieraħ" 203 }, 204 { 205 "ru", 206 "", 207 "DATE=RELATIVE_SHORT", 208 "RELATIVE_ADD:DATE=-2", // 2 days ago 209 "позавчера" 210 }, 211 } 212 } 213 TestYearLengths { 214 Info { 215 Description { "Test data for multiple year lengths, y yy yyy yyyy yyyyy:" } 216 } 217 Settings { 218 // options: 'format', or 'parse'. One can be omitted if this is a 1 way test. 219 { 220 Type { "date_format" } 221 }, 222// These are not round trippable, so do not parse. 223// { 224// Type { "date_parse" } 225// }, 226 } 227 Headers { "locale", "zone", "spec", "date", "str"} 228 // locale: locale including calendar type 229 // zone: time zone name, or "" to not explicitly set zone 230 // spec: either 'PATTERN=y mm h' etc, or 'DATE=SHORT,TIME=LONG' 231 // date: either 'MILLIS=####' where #### is millis, 232 // or a calendar spec ERA=0,YEAR=1, etc.. applied to the calendar type specified by the locale 233 // or RELATIVE_MILLIS=### where ### is a signed value which is added to the current millis 234 // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time, 235 // and any other fields present will be set explicitly. 236 // str: the expected unicode string 237 238// from CLDR UTS 35: 239//Year y yy yyy yyyy yyyyy 240 241 Cases { 242//AD 1 1 01 001 0001 00001 243 { 244 "en_US@calendar=gregorian", 245 "", 246 "PATTERN=G y", 247 "YEAR=1", 248 "AD 1" 249 }, 250 { 251 "en_US@calendar=gregorian", 252 "", 253 "PATTERN=G yy", 254 "YEAR=1", 255 "AD 01" 256 }, 257 { 258 "en_US@calendar=gregorian", 259 "", 260 "PATTERN=G yyy", 261 "YEAR=1", 262 "AD 001" 263 }, 264 { 265 "en_US@calendar=gregorian", 266 "", 267 "PATTERN=G yyyy", 268 "YEAR=1", 269 "AD 0001" 270 }, 271 { 272 "en_US@calendar=gregorian", 273 "", 274 "PATTERN=G yyyyy", 275 "YEAR=1", 276 "AD 00001" 277 }, 278//AD 12 12 12 012 0012 00012 279 { 280 "en_US@calendar=gregorian", 281 "", 282 "PATTERN=G y", 283 "YEAR=12", 284 "AD 12" 285 }, 286 { 287 "en_US@calendar=gregorian", 288 "", 289 "PATTERN=G yy", 290 "YEAR=12", 291 "AD 12" 292 }, 293 { 294 "en_US@calendar=gregorian", 295 "", 296 "PATTERN=G yyy", 297 "YEAR=12", 298 "AD 012" 299 }, 300 { 301 "en_US@calendar=gregorian", 302 "", 303 "PATTERN=G yyyy", 304 "YEAR=12", 305 "AD 0012" 306 }, 307 { 308 "en_US@calendar=gregorian", 309 "", 310 "PATTERN=G yyyyy", 311 "YEAR=12", 312 "AD 00012" 313 }, 314//AD 123 123 23 123 0123 00123 315 { 316 "en_US@calendar=gregorian", 317 "", 318 "PATTERN=G y", 319 "YEAR=123", 320 "AD 123" 321 }, 322 { 323 "en_US@calendar=gregorian", 324 "", 325 "PATTERN=G yy", 326 "YEAR=123", 327 "AD 23" 328 }, 329 { 330 "en_US@calendar=gregorian", 331 "", 332 "PATTERN=G yyy", 333 "YEAR=123", 334 "AD 123" 335 }, 336 { 337 "en_US@calendar=gregorian", 338 "", 339 "PATTERN=G yyyy", 340 "YEAR=123", 341 "AD 0123" 342 }, 343 { 344 "en_US@calendar=gregorian", 345 "", 346 "PATTERN=G yyyyy", 347 "YEAR=123", 348 "AD 00123" 349 }, 350//AD 1234 1234 34 1234 1234 01234 351 { 352 "en_US@calendar=gregorian", 353 "", 354 "PATTERN=G y", 355 "YEAR=1234", 356 "AD 1234" 357 }, 358 { 359 "en_US@calendar=gregorian", 360 "", 361 "PATTERN=G yy", 362 "YEAR=1234", 363 "AD 34" 364 }, 365 { 366 "en_US@calendar=gregorian", 367 "", 368 "PATTERN=G yyy", 369 "YEAR=1234", 370 "AD 1234" 371 }, 372 { 373 "en_US@calendar=gregorian", 374 "", 375 "PATTERN=G yyyy", 376 "YEAR=1234", 377 "AD 1234" 378 }, 379 { 380 "en_US@calendar=gregorian", 381 "", 382 "PATTERN=G yyyyy", 383 "YEAR=1234", 384 "AD 01234" 385 }, 386//AD 12345 12345 45 12345 12345 12345 387 { 388 "en_US@calendar=gregorian", 389 "", 390 "PATTERN=G y", 391 "YEAR=12345", 392 "AD 12345" 393 }, 394 { 395 "en_US@calendar=gregorian", 396 "", 397 "PATTERN=G yy", 398 "YEAR=12345", 399 "AD 45" 400 }, 401 { 402 "en_US@calendar=gregorian", 403 "", 404 "PATTERN=G yyy", 405 "YEAR=12345", 406 "AD 12345" 407 }, 408 { 409 "en_US@calendar=gregorian", 410 "", 411 "PATTERN=G yyyy", 412 "YEAR=12345", 413 "AD 12345" 414 }, 415 { 416 "en_US@calendar=gregorian", 417 "", 418 "PATTERN=G yyyyy", 419 "YEAR=12345", 420 "AD 12345" 421 }, 422 } 423 } 424 TestConsistentPivot { 425 Info { 426 Description { "Test consistent pivot (parse/format) for multiple year lengths, y yy yyy yyyy yyyyy:" } 427 } 428 Settings { 429 // options: 'format', or 'parse'. One can be omitted if this is a 1 way test. 430 { 431 Type { "date_format" } 432 }, 433 { 434 Type { "date_parse" } 435 }, 436 } 437 Headers { "locale", "zone", "spec", "date", "str"} 438 // locale: locale including calendar type 439 // zone: time zone name, or "" to not explicitly set zone 440 // spec: either 'PATTERN=y mm h' etc, or 'DATE=SHORT,TIME=LONG' 441 // date: either 'MILLIS=####' where #### is millis, 442 // or a calendar spec ERA=0,YEAR=1, etc.. applied to the calendar type specified by the locale 443 // or RELATIVE_MILLIS=### where ### is a signed value which is added to the current millis 444 // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time, 445 // and any other fields present will be set explicitly. 446 // str: the expected unicode string 447 448// from CLDR UTS 35: 449//Year y yy yyy yyyy yyyyy 450 451 Cases { 452//AD 1 1 01 001 0001 00001 453 { 454 "en_US@calendar=gregorian", 455 "", 456 "PATTERN=G y", 457 "YEAR=2008", 458 "AD 2008" 459 }, 460 { 461 "en_US@calendar=gregorian", 462 "", 463 "PATTERN=G yy", 464 "YEAR=2008", 465 "AD 08" 466 }, 467 { 468 "en_US@calendar=gregorian", 469 "", 470 "PATTERN=G yyy", 471 "YEAR=2008", 472 "AD 2008" 473 }, 474 { 475 "en_US@calendar=gregorian", 476 "", 477 "PATTERN=G yyyy", 478 "YEAR=2008", 479 "AD 2008" 480 }, 481 { 482 "en_US@calendar=gregorian", 483 "", 484 "PATTERN=G yyyyy", 485 "YEAR=2008", 486 "AD 02008" 487 }, 488 489 // Japanese 490 { 491 "en_US@calendar=japanese", 492 "", 493 "PATTERN=G y", 494 "YEAR=8", 495 "Heisei 8" 496 }, 497 { 498 "en_US@calendar=japanese", 499 "", 500 "PATTERN=G yy", 501 "YEAR=8", 502 "Heisei 08" 503 }, 504 { 505 "en_US@calendar=japanese", 506 "", 507 "PATTERN=G yyy", 508 "YEAR=8", 509 "Heisei 008" 510 }, 511 { 512 "en_US@calendar=japanese", 513 "", 514 "PATTERN=G yyyy", 515 "YEAR=8", 516 "Heisei 0008" 517 }, 518 { 519 "en_US@calendar=japanese", 520 "", 521 "PATTERN=G yyyyy", 522 "YEAR=8", 523 "Heisei 00008" 524 }, 525 526 } 527 } 528 TestHebrew{ 529 Info { 530 Description { "Test Hebrew calendar:" } 531 } 532 Settings { 533 // options: 'format', or 'parse'. One can be omitted if this is a 1 way test. 534 { 535 Type { "date_format" } 536 }, 537 } 538 Headers { "locale", "zone", "spec", "date", "str"} 539 // locale: locale including calendar type 540 // zone: time zone name, or "" to not explicitly set zone 541 // spec: either 'PATTERN=y mm h' etc, or 'DATE=SHORT,TIME=LONG' 542 // date: either 'MILLIS=####' where #### is millis, 543 // or a calendar spec ERA=0,YEAR=1, etc.. applied to the calendar type specified by the locale 544 // or RELATIVE_MILLIS=### where ### is a signed value which is added to the current millis 545 // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time, 546 // and any other fields present will be set explicitly. 547 // str: the expected unicode string 548 549 Cases { 550 { 551 "en_US@calendar=hebrew", 552 "", 553 "DATE=FULL,TIME=FULL", 554 "MILLIS=3076424179200000", 555 "Friday, 3 Heshvan 103217 at 12:00:00 AM GMT-08:00" 556 }, 557 } 558 } 559 TestMoreDateParse { 560 Info { 561 Description { "Additional date parse tests (may not 562 round/trip to format.)" } 563 } 564 Settings { 565 // options: 'format', or 'parse'. One can be omitted if this is a 1 way test. 566 { 567 Type { "date_parse" } 568 }, 569 } 570 Headers { "locale", "zone", "spec", "date", "str"} 571 // locale: locale including calendar type 572 // zone: time zone name, or "" to not explicitly set zone 573 // spec: either 'PATTERN=y mm h' etc, or 'DATE=SHORT,TIME=LONG' 574 // date: either 'MILLIS=####' where #### is millis, 575 // or a calendar spec ERA=0,YEAR=1, etc.. applied to the calendar type specified by the locale 576 // or RELATIVE_MILLIS=### where ### is a signed value which is added to the current millis 577 // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time, 578 // and any other fields present will be set explicitly. 579 // str: the expected unicode string 580 581 Cases { 582 { 583 "en_US@calendar=gregorian", 584 "", 585 "PATTERN=YYYYHHmmssEEEww", 586 "YEAR=1999,HOUR_OF_DAY=4,MINUTE=5,SECOND=6,DAY_OF_WEEK=2,WEEK_OF_YEAR=4", 587 // won't roundtrip. 588 "1998040506MON56" 589 } 590 } 591 } 592 } 593} 594