// 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 'at' { "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 at 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 'at' { "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 at 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 ngày 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 "Ilbieraħ" }, { "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" } } } } }