// Copyright (c) 2007-2009 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","spec", "date", "str"}
            // locale: locale including calendar type
            // 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
            // 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","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"
               },
               {
                    "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","spec", "date", "str"}
            // locale: locale including calendar type
            // 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
            // 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","spec", "date", "str"}
            // locale: locale including calendar type
            // 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
            // 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","spec", "date", "str"}
            // locale: locale including calendar type
            // 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
            // str:   the expected unicode string
            
            Cases { 
               {
                    "en_US@calendar=hebrew",         
                    "DATE=FULL,TIME=FULL",
                    "MILLIS=3076424179200000",
                    "Friday, Heshvan 3, 103217 12:00:00 AM GMT-08:00"
               },
            }    
        }
    }        
}
