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