| // Copyright (C) 2016 and later: Unicode, Inc. and others. |
| // License & terms of use: http://www.unicode.org/copyright.html |
| // Copyright (c) 2007-2015 International Business Machines |
| // Corporation and others. All Rights Reserved. |
| format:table(nofallback) { |
| Info { |
| Description { "These are the data driven format tests" } |
| LongDescription { "Data for data driven format tests." } |
| } |
| TestData { |
| TestDateFormatBasic { |
| Info { |
| Description { "Test data for format and parse :" } |
| } |
| Settings { |
| // options: 'format', or 'parse'. One can be omitted if this is a 1 way test. |
| { |
| Type { "date_format" } |
| }, |
| { |
| Type { "date_parse" } |
| }, |
| } |
| Headers { "locale", "zone", "spec", "date", "str"} |
| // locale: locale including calendar type |
| // zone: time zone name, or "" to not explicitly set zone |
| // spec: either 'PATTERN=y mm h' etc, or 'DATE=SHORT,TIME=LONG' |
| // date: either 'MILLIS=####' where #### is millis, |
| // or a calendar spec ERA=0,YEAR=1, etc.. applied to the calendar type specified by the locale |
| // or RELATIVE_MILLIS=### where ### is a signed value which is added to the current millis |
| // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time, |
| // and any other fields present will be set explicitly. |
| // str: the expected unicode string |
| Cases { |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "DATE=SHORT,TIME=SHORT", |
| "ERA=1,YEAR=2007,MONTH=AUGUST,DATE=8,HOUR_OF_DAY=18,MINUTE=54,SECOND=0", |
| "8/8/07, 6:54 PM" |
| }, |
| { |
| "zh_TW@calendar=roc", |
| "", |
| "DATE=LONG", |
| "ERA=1,YEAR=98,MONTH=0,DATE=24", |
| "民國98年1月24日", |
| }, |
| { |
| //民國前2年1月24日 -> 1910-1-24 |
| "zh_TW@calendar=roc", |
| "", |
| "DATE=LONG", |
| "ERA=0,YEAR=2,MONTH=0,DATE=24", |
| "民國前2年1月24日", |
| }, |
| } |
| } |
| TestFormatRelative { |
| Info { |
| Description { "relative format :" } |
| } |
| Settings { |
| { |
| Type { "date_format" } |
| }, |
| } |
| Headers { "locale", "zone", "spec", "date", "str"} |
| Cases { |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "DATE=RELATIVE_SHORT", |
| "RELATIVE_ADD:DATE=1", // one day from now |
| "tomorrow" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "DATE=RELATIVE_SHORT", |
| "RELATIVE_MILLIS=0", // today |
| "today" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "DATE=RELATIVE_SHORT", |
| "RELATIVE_ADD:DATE=-1", // one day before now |
| "yesterday" |
| }, |
| // date only, out of relative range |
| { |
| "en_US@calendar=gregorian", |
| "GMT", |
| "DATE=RELATIVE_FULL", |
| "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0", |
| "Monday, October 8, 2012" |
| }, |
| // time only |
| { |
| "en_US@calendar=gregorian", |
| "GMT", |
| "TIME=LONG", |
| "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0", |
| "11:59:00 PM GMT" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "GMT", |
| "TIME=LONG", |
| "RELATIVE_ADD:DATE=-1,HOUR_OF_DAY=17,MINUTE=0,SECOND=0", // one day before now at specified time |
| "5:00:00 PM GMT" |
| }, |
| // normal formats, combined using 'at' |
| { |
| "en_US@calendar=gregorian", |
| "GMT", |
| "DATE=RELATIVE_FULL,TIME=LONG", |
| "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0", |
| "Monday, October 8, 2012 at 11:59:00 PM GMT" |
| }, |
| // normal formats, combined using ", " |
| { |
| "en_US@calendar=gregorian", |
| "GMT", |
| "DATE=RELATIVE_MEDIUM,TIME=SHORT", |
| "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0", |
| "Oct 8, 2012, 11:59 PM" |
| }, |
| // formats with relative day, combined using 'at' |
| { |
| "en_US@calendar=gregorian", |
| "GMT", |
| "DATE=RELATIVE_FULL,TIME=LONG", |
| "RELATIVE_ADD:DATE=-1,HOUR_OF_DAY=17,MINUTE=0,SECOND=0", // one day before now at specified time |
| "yesterday at 5:00:00 PM GMT" |
| }, |
| // formats with relative day, combined using ", " |
| { |
| "en_US@calendar=gregorian", |
| "GMT", |
| "DATE=RELATIVE_MEDIUM,TIME=SHORT", |
| "RELATIVE_ADD:DATE=-1,HOUR_OF_DAY=17,MINUTE=0,SECOND=0", // one day before now at specified time |
| "yesterday, 5:00 PM" |
| }, |
| // normal formats that have quoted literals, combined |
| { |
| "pt@calendar=gregorian", |
| "GMT", |
| "DATE=RELATIVE_FULL,TIME=LONG", |
| "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0", |
| "segunda-feira, 8 de outubro de 2012 23:59:00 GMT" |
| }, |
| // vi combined formats have time first |
| { |
| "vi@calendar=gregorian", |
| "GMT", |
| "DATE=RELATIVE_LONG,TIME=MEDIUM", |
| "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0", |
| "23:59:00 8 tháng 10, 2012" |
| }, |
| { |
| "vi@calendar=gregorian", |
| "GMT", |
| "DATE=RELATIVE_LONG,TIME=MEDIUM", |
| "RELATIVE_ADD:DATE=-1,HOUR_OF_DAY=17,MINUTE=0,SECOND=0", // one day before now at specified time |
| "17:00:00 Hôm qua" |
| }, |
| // el combines formats using hyphen |
| { |
| "el@calendar=gregorian", |
| "GMT", |
| "DATE=RELATIVE_LONG,TIME=MEDIUM", |
| "ERA=1,YEAR=2012,MONTH=OCTOBER,DATE=8,HOUR_OF_DAY=23,MINUTE=59,SECOND=0", |
| "8 Οκτωβρίου 2012 - 11:59:00 μ.μ." |
| }, |
| { |
| "el@calendar=gregorian", |
| "GMT", |
| "DATE=RELATIVE_LONG,TIME=MEDIUM", |
| "RELATIVE_ADD:DATE=-1,HOUR_OF_DAY=17,MINUTE=0,SECOND=0", // one day before now at specified time |
| "χθες - 5:00:00 μ.μ." |
| }, |
| // other tests |
| { |
| "mt_MT@calendar=gregorian", |
| "", |
| "DATE=RELATIVE_SHORT", |
| "RELATIVE_ADD:DATE=1", // one day from now |
| "għada" |
| }, |
| { |
| "mt_MT@calendar=gregorian", |
| "", |
| "DATE=RELATIVE_SHORT", |
| "RELATIVE_MILLIS=0", // today |
| "illum" |
| }, |
| { |
| "mt_MT@calendar=gregorian", |
| "", |
| "DATE=RELATIVE_SHORT", |
| "RELATIVE_ADD:DATE=-1", // one day before now |
| "lbieraħ" |
| }, |
| { |
| "ru", |
| "", |
| "DATE=RELATIVE_SHORT", |
| "RELATIVE_ADD:DATE=-2", // 2 days ago |
| "позавчера" |
| }, |
| } |
| } |
| TestYearLengths { |
| Info { |
| Description { "Test data for multiple year lengths, y yy yyy yyyy yyyyy:" } |
| } |
| Settings { |
| // options: 'format', or 'parse'. One can be omitted if this is a 1 way test. |
| { |
| Type { "date_format" } |
| }, |
| // These are not round trippable, so do not parse. |
| // { |
| // Type { "date_parse" } |
| // }, |
| } |
| Headers { "locale", "zone", "spec", "date", "str"} |
| // locale: locale including calendar type |
| // zone: time zone name, or "" to not explicitly set zone |
| // spec: either 'PATTERN=y mm h' etc, or 'DATE=SHORT,TIME=LONG' |
| // date: either 'MILLIS=####' where #### is millis, |
| // or a calendar spec ERA=0,YEAR=1, etc.. applied to the calendar type specified by the locale |
| // or RELATIVE_MILLIS=### where ### is a signed value which is added to the current millis |
| // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time, |
| // and any other fields present will be set explicitly. |
| // str: the expected unicode string |
| |
| // from CLDR UTS 35: |
| //Year y yy yyy yyyy yyyyy |
| |
| Cases { |
| //AD 1 1 01 001 0001 00001 |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G y", |
| "YEAR=1", |
| "AD 1" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yy", |
| "YEAR=1", |
| "AD 01" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yyy", |
| "YEAR=1", |
| "AD 001" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yyyy", |
| "YEAR=1", |
| "AD 0001" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yyyyy", |
| "YEAR=1", |
| "AD 00001" |
| }, |
| //AD 12 12 12 012 0012 00012 |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G y", |
| "YEAR=12", |
| "AD 12" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yy", |
| "YEAR=12", |
| "AD 12" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yyy", |
| "YEAR=12", |
| "AD 012" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yyyy", |
| "YEAR=12", |
| "AD 0012" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yyyyy", |
| "YEAR=12", |
| "AD 00012" |
| }, |
| //AD 123 123 23 123 0123 00123 |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G y", |
| "YEAR=123", |
| "AD 123" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yy", |
| "YEAR=123", |
| "AD 23" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yyy", |
| "YEAR=123", |
| "AD 123" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yyyy", |
| "YEAR=123", |
| "AD 0123" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yyyyy", |
| "YEAR=123", |
| "AD 00123" |
| }, |
| //AD 1234 1234 34 1234 1234 01234 |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G y", |
| "YEAR=1234", |
| "AD 1234" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yy", |
| "YEAR=1234", |
| "AD 34" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yyy", |
| "YEAR=1234", |
| "AD 1234" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yyyy", |
| "YEAR=1234", |
| "AD 1234" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yyyyy", |
| "YEAR=1234", |
| "AD 01234" |
| }, |
| //AD 12345 12345 45 12345 12345 12345 |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G y", |
| "YEAR=12345", |
| "AD 12345" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yy", |
| "YEAR=12345", |
| "AD 45" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yyy", |
| "YEAR=12345", |
| "AD 12345" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yyyy", |
| "YEAR=12345", |
| "AD 12345" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yyyyy", |
| "YEAR=12345", |
| "AD 12345" |
| }, |
| } |
| } |
| TestConsistentPivot { |
| Info { |
| Description { "Test consistent pivot (parse/format) for multiple year lengths, y yy yyy yyyy yyyyy:" } |
| } |
| Settings { |
| // options: 'format', or 'parse'. One can be omitted if this is a 1 way test. |
| { |
| Type { "date_format" } |
| }, |
| { |
| Type { "date_parse" } |
| }, |
| } |
| Headers { "locale", "zone", "spec", "date", "str"} |
| // locale: locale including calendar type |
| // zone: time zone name, or "" to not explicitly set zone |
| // spec: either 'PATTERN=y mm h' etc, or 'DATE=SHORT,TIME=LONG' |
| // date: either 'MILLIS=####' where #### is millis, |
| // or a calendar spec ERA=0,YEAR=1, etc.. applied to the calendar type specified by the locale |
| // or RELATIVE_MILLIS=### where ### is a signed value which is added to the current millis |
| // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time, |
| // and any other fields present will be set explicitly. |
| // str: the expected unicode string |
| |
| // from CLDR UTS 35: |
| //Year y yy yyy yyyy yyyyy |
| |
| Cases { |
| //AD 1 1 01 001 0001 00001 |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G y", |
| "YEAR=2008", |
| "AD 2008" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yy", |
| "YEAR=2008", |
| "AD 08" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yyy", |
| "YEAR=2008", |
| "AD 2008" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yyyy", |
| "YEAR=2008", |
| "AD 2008" |
| }, |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=G yyyyy", |
| "YEAR=2008", |
| "AD 02008" |
| }, |
| |
| // Japanese |
| // { |
| // "en_US@calendar=japanese", |
| // "", |
| // "PATTERN=G y", |
| // "YEAR=8", |
| // "Heisei 8" |
| // }, |
| // { |
| // "en_US@calendar=japanese", |
| // "", |
| // "PATTERN=G yy", |
| // "YEAR=8", |
| // "Heisei 08" |
| // }, |
| // { |
| // "en_US@calendar=japanese", |
| // "", |
| // "PATTERN=G yyy", |
| // "YEAR=8", |
| // "Heisei 008" |
| // }, |
| // { |
| // "en_US@calendar=japanese", |
| // "", |
| // "PATTERN=G yyyy", |
| // "YEAR=8", |
| // "Heisei 0008" |
| // }, |
| // { |
| // "en_US@calendar=japanese", |
| // "", |
| // "PATTERN=G yyyyy", |
| // "YEAR=8", |
| // "Heisei 00008" |
| // }, |
| |
| } |
| } |
| TestHebrew{ |
| Info { |
| Description { "Test Hebrew calendar:" } |
| } |
| Settings { |
| // options: 'format', or 'parse'. One can be omitted if this is a 1 way test. |
| { |
| Type { "date_format" } |
| }, |
| } |
| Headers { "locale", "zone", "spec", "date", "str"} |
| // locale: locale including calendar type |
| // zone: time zone name, or "" to not explicitly set zone |
| // spec: either 'PATTERN=y mm h' etc, or 'DATE=SHORT,TIME=LONG' |
| // date: either 'MILLIS=####' where #### is millis, |
| // or a calendar spec ERA=0,YEAR=1, etc.. applied to the calendar type specified by the locale |
| // or RELATIVE_MILLIS=### where ### is a signed value which is added to the current millis |
| // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time, |
| // and any other fields present will be set explicitly. |
| // str: the expected unicode string |
| |
| Cases { |
| { |
| "en_US@calendar=hebrew", |
| "", |
| "DATE=FULL,TIME=FULL", |
| "MILLIS=3076424179200000", |
| "Friday, 3 Heshvan 103217 at 12:00:00 AM GMT-08:00" |
| }, |
| } |
| } |
| TestMoreDateParse { |
| Info { |
| Description { "Additional date parse tests (may not |
| round/trip to format.)" } |
| } |
| Settings { |
| // options: 'format', or 'parse'. One can be omitted if this is a 1 way test. |
| { |
| Type { "date_parse" } |
| }, |
| } |
| Headers { "locale", "zone", "spec", "date", "str"} |
| // locale: locale including calendar type |
| // zone: time zone name, or "" to not explicitly set zone |
| // spec: either 'PATTERN=y mm h' etc, or 'DATE=SHORT,TIME=LONG' |
| // date: either 'MILLIS=####' where #### is millis, |
| // or a calendar spec ERA=0,YEAR=1, etc.. applied to the calendar type specified by the locale |
| // or RELATIVE_MILLIS=### where ### is a signed value which is added to the current millis |
| // or RELATIVE_ADD:DATE=1 which means that the field "DATE" will be added by +1 relative to current time, |
| // and any other fields present will be set explicitly. |
| // str: the expected unicode string |
| |
| Cases { |
| { |
| "en_US@calendar=gregorian", |
| "", |
| "PATTERN=YYYYHHmmssEEEww", |
| "YEAR=1999,HOUR_OF_DAY=4,MINUTE=5,SECOND=6,DAY_OF_WEEK=2,WEEK_OF_YEAR=4", |
| // won't roundtrip. |
| "1998040506MON56" |
| } |
| } |
| } |
| } |
| } |