﻿// Copyright (c) 2007-2013 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 Ngày 08 tháng 10 năm 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, Heshvan 3, 103217 AM 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"
               }
            }    
        }
    }        
}
