| # |
| # |
| # |
| |
| # The test cases in this file assume that the first day of week is Sunday |
| # and the minimal days in the first week is 1. |
| |
| locale ja JP JP |
| new instance jcal |
| |
| timezone Asia/Tokyo |
| new instance tokyocal |
| |
| test roll HOUR_OF_DAY |
| use jcal |
| clear all |
| set era Heisei |
| set datetime 1 Jan 8 23 59 59 |
| roll hour_of_day 1 |
| check datetime 1 Jan 8 0 59 59 |
| check ampm AM |
| check hour 0 |
| roll hour_of_day -1 |
| check datetime 1 Jan 8 23 59 59 |
| roll hour_of_day 240 |
| check datetime 1 Jan 8 23 59 59 |
| roll hour_of_day -240 |
| check datetime 1 Jan 8 23 59 59 |
| |
| test roll HOUR |
| use jcal |
| clear all |
| set era Showa |
| set datetime 64 Jan 7 11 59 59 |
| get ampm |
| check era Showa |
| check hour 11 |
| check ampm AM |
| roll hour 1 |
| check hour 0 |
| check ampm AM |
| check datetime 64 Jan 7 0 59 59 |
| roll hour -1 |
| check datetime 64 Jan 7 11 59 59 |
| roll hour 240 |
| check datetime 64 Jan 7 11 59 59 |
| roll hour -240 |
| check datetime 64 Jan 7 11 59 59 |
| |
| clear all |
| set era Showa |
| set datetime 64 Jan 7 23 59 59 |
| get ampm |
| check era Showa |
| check hour 11 |
| check ampm PM |
| roll hour 1 |
| check hour 0 |
| check ampm PM |
| check datetime 64 Jan 7 12 59 59 |
| roll hour -1 |
| check datetime 64 Jan 7 23 59 59 |
| roll hour 240 |
| check datetime 64 Jan 7 23 59 59 |
| roll hour -240 |
| check datetime 64 Jan 7 23 59 59 |
| |
| clear all |
| set era Heisei |
| set datetime 1 Jan 8 23 59 59 |
| get ampm |
| check hour 11 |
| check ampm PM |
| roll hour 1 |
| check hour 0 |
| check ampm PM |
| check datetime 1 Jan 8 12 59 59 |
| roll hour -1 |
| check datetime 1 Jan 8 23 59 59 |
| roll hour 240 |
| check datetime 1 Jan 8 23 59 59 |
| roll hour -240 |
| check datetime 1 Jan 8 23 59 59 |
| |
| test roll YEAR |
| clear all |
| set date BeforeMeiji 1867 Jan 1 |
| get actualmin year |
| # roll to the min year value of Gregorian (not Julian) |
| roll year 1 |
| check date BeforeMeiji $result Jan 1 |
| roll year -1 |
| check date BeforeMeiji 1867 Jan 1 |
| |
| clear all |
| set date Meiji 45 Jul 29 |
| roll year 1 |
| check date Meiji 1 Jul 29 |
| roll year -1 |
| check date Meiji 45 Jul 29 |
| |
| clear all |
| set date Meiji 44 Jul 30 |
| roll year 1 |
| check date Meiji 1 Jul 30 |
| roll year -1 |
| check date Meiji 44 Jul 30 |
| |
| clear all |
| set date Taisho 15 Aug 1 |
| roll year 1 |
| check date Taisho 1 Aug 1 |
| roll year -1 |
| check date Taisho 15 Aug 1 |
| |
| clear all |
| set date Taisho 14 Dec 31 |
| roll year 1 |
| check date Taisho 1 Dec 31 |
| roll year -1 |
| check date Taisho 14 Dec 31 |
| |
| clear all |
| set date Showa 63 Feb 1 |
| # Neither 64 Feb 1 nor 1 Feb 1 exists in Showa. |
| roll year 1 |
| check date Showa 2 Feb 1 |
| roll year -1 |
| check date Showa 63 Feb 1 |
| |
| set date Showa 63 Dec 30 |
| roll year 1 |
| # Showa 1 Dec 30 exists. |
| check date Showa 1 Dec 30 |
| roll year -1 |
| check date Showa 63 Dec 30 |
| |
| set date Showa 64 Jan 7 |
| roll year 1 |
| check date Showa 2 Jan 7 |
| roll year -1 |
| check date Showa 64 Jan 7 |
| |
| set date Heisei 31 Apr 30 |
| roll year 1 |
| check date Heisei 1 Apr 30 |
| roll year -1 |
| check date Heisei 31 Apr 30 |
| |
| set date Reiwa 2 Apr 30 |
| get max year |
| assign $result $hmax |
| roll year -1 |
| check date Reiwa $hmax Apr 30 |
| roll year 1 |
| check date Reiwa 2 Apr 30 |
| |
| test roll MONTH |
| set date BeforeMeiji 1867 Dec 1 |
| roll month 1 |
| check date BeforeMeiji 1867 Jan 1 |
| roll month -1 |
| check date BeforeMeiji 1867 Dec 1 |
| roll month 14 |
| check date BeforeMeiji 1867 Feb 1 |
| roll month -14 |
| check date BeforeMeiji 1867 Dec 1 |
| |
| set date Meiji 1 Dec 1 |
| roll month 1 |
| check date Meiji 1 Jan 1 |
| roll month -1 |
| check date Meiji 1 Dec 1 |
| roll month 13 |
| check date Meiji 1 Jan 1 |
| roll month -13 |
| check date Meiji 1 Dec 1 |
| |
| set date Meiji 45 Jun 30 |
| roll month 1 |
| # Meiji 45 Jun 30 is actually Taisho 1 Jun 30. By the rule of |
| # roll() that year can't be changed, the day of month value |
| # has to be changed ("pin date to month"). |
| check date Meiji 45 Jul 29 |
| roll month -1 |
| # doesn't roll back to Jun 30, but to Jun 29. |
| check date Meiji 45 Jun 29 |
| |
| set date Meiji 45 Jun 30 |
| # Meiji 45 (year) has only 7 months. rolling 14 months must |
| # bring the given date to the same date. |
| roll month 14 |
| check date Meiji 45 Jun 30 |
| roll month -14 |
| check date Meiji 45 Jun 30 |
| |
| # Taisho Gan-nen (year 1) has only 6 months. |
| set date Taisho 1 Jul 30 |
| roll month -1 |
| check date Taisho 1 Dec 30 |
| roll month 1 |
| check date Taisho 1 Jul 30 |
| roll month -18 |
| check date Taisho 1 Jul 30 |
| roll month 18 |
| check date Taisho 1 Jul 30 |
| |
| set date Taisho 15 Jan 20 |
| roll month 11 |
| check date Taisho 15 Dec 20 |
| |
| set date Taisho 15 Jan 25 |
| roll month 11 |
| # Taisho 15 Dec 25 is actually Showa 1 Dec 25. Day of month is |
| # adjusted to the last day of month. ("pin date to month") |
| check date Taisho 15 Dec 24 |
| |
| set date Showa 1 Dec 25 |
| roll month 1 |
| check date Showa 1 Dec 25 |
| roll month -1 |
| check date Showa 1 Dec 25 |
| roll month 17 |
| check date Showa 1 Dec 25 |
| roll month -17 |
| check date Showa 1 Dec 25 |
| |
| set date Showa 64 Jan 7 |
| roll month 1 |
| check date Showa 64 Jan 7 |
| |
| set date Heisei 1 Feb 1 |
| roll month -1 |
| # Heisei starts from Jan 8. |
| check date Heisei 1 Jan 8 |
| roll month 1 |
| check date Heisei 1 Feb 8 |
| |
| set date Heisei 1 Feb 8 |
| roll month -1 |
| check date Heisei 1 Jan 8 |
| |
| set date Heisei 1 Dec 1 |
| roll month 1 |
| check date Heisei 1 Jan 8 |
| roll month -1 |
| check date Heisei 1 Dec 8 |
| |
| set date Heisei 1 Dec 8 |
| roll month 1 |
| check date Heisei 1 Jan 8 |
| roll month -1 |
| check date Heisei 1 Dec 8 |
| |
| # time zone dependent tests |
| use tokyocal |
| clear all |
| |
| set date BeforeMeiji 1 Jan 1 |
| get min year |
| assign $result $minyear |
| # actual min date: -292275055.05.17T01:47:04.192+0900 |
| set date BeforeMeiji $minyear Dec 31 |
| roll month 1 |
| check date BeforeMeiji $minyear May 31 |
| |
| set date BeforeMeiji $minyear Dec 1 |
| set timeofday 1 47 4 192 |
| roll month 1 |
| check date BeforeMeiji $minyear May 17 |
| check timeofday 1 47 4 192 |
| |
| set date BeforeMeiji $minyear Dec 1 |
| set timeofday 1 47 4 191 |
| roll month 1 |
| check date BeforeMeiji $minyear May 18 |
| check timeofday 1 47 4 191 |
| |
| set date Reiwa 17 Jan 1 |
| get max year |
| assign $result $max |
| set date Reiwa $max Jul 28 |
| roll month 1 |
| check date Reiwa $max Aug 17 |
| set date Reiwa $max Jul 28 |
| set timeofday 23 59 59 999 |
| roll month 1 |
| check date Reiwa $max Aug 16 |
| check timeofday 23 59 59 999 |
| |
| test roll WEEK_OF_YEAR |
| use jcal |
| clear all |
| # 1867 Dec 23 is Monday. |
| set date BeforeMeiji 1867 Dec 23 |
| roll week_of_year 1 |
| check day_of_week Mon |
| check date BeforeMeiji 1867 Jan 7 |
| roll week_of_year -1 |
| check day_of_week Mon |
| check date BeforeMeiji 1867 Dec 23 |
| roll week_of_year 26 |
| check day_of_week Mon |
| check date BeforeMeiji 1867 Jul 1 |
| roll week_of_year -26 |
| check day_of_week Mon |
| check date BeforeMeiji 1867 Dec 23 |
| |
| # 1867 Dec 23 is Wednesday. |
| set date Meiji 1 Dec 23 |
| roll week_of_year 1 |
| check day_of_week Wed |
| check date Meiji 1 Jan 1 |
| roll week_of_year -1 |
| check day_of_week Wed |
| check date Meiji 1 Dec 23 |
| roll week_of_year 26 |
| check day_of_week Wed |
| check date Meiji 1 Jun 24 |
| roll week_of_year -26 |
| check day_of_week Wed |
| check date Meiji 1 Dec 23 |
| |
| # Meiji 45 July 22 is Monday. |
| set date Meiji 45 Jul 22 |
| # the next week if the first week of Taisho 1 |
| roll week_of_year 1 |
| check day_of_week Mon |
| check date Meiji 45 Jan 1 |
| roll week_of_year -1 |
| check day_of_week Mon |
| check date Meiji 45 Jul 22 |
| roll week_of_year 26 |
| check day_of_week Mon |
| check date Meiji 45 Jun 24 |
| |
| # Taisho Gan-nen (year 1) July 30 is Tuesday. |
| set date Taisho 1 Jul 30 |
| roll week_of_year -1 |
| # Taisho Gen-nen December 31 is the first week of the next year. |
| check day_of_week Tue |
| check date Taisho 1 Dec 24 |
| roll week_of_year 1 |
| check day_of_week Tue |
| check date Taisho 1 Jul 30 |
| roll week_of_year 26 |
| check day_of_week Tue |
| check date Taisho 1 Aug 27 |
| roll week_of_year -26 |
| check day_of_week Tue |
| check date Taisho 1 Jul 30 |
| |
| # Taisho 15 January 7 is Thursday. |
| set date Taisho 15 Jan 7 |
| roll week_of_year -1 |
| check day_of_week Thu |
| check date Taisho 15 Dec 16 |
| roll week_of_year 1 |
| check day_of_week Thu |
| check date Taisho 15 Jan 7 |
| |
| roll week_of_year 51 |
| check day_of_week Thu |
| check date Taisho 15 Jan 14 |
| |
| # Showa Gan-nen December 30 is Thursday. Showa Gan-nen has |
| # only one week. Rolling any number of weeks brings to the |
| # same date. |
| set date Showa 1 Dec 30 |
| roll week_of_year 1 |
| check day_of_week Thu |
| check date Showa 1 Dec 30 |
| roll week_of_year -1 |
| check day_of_week Thu |
| check date Showa 1 Dec 30 |
| roll week_of_year 26 |
| check day_of_week Thu |
| check date Showa 1 Dec 30 |
| roll week_of_year -26 |
| check day_of_week Thu |
| check date Showa 1 Dec 30 |
| |
| # Showa 64 January 7 is Saturday. The year has only one week. |
| set date Showa 64 Jan 7 |
| roll week_of_year 1 |
| check day_of_week Sat |
| check date Showa 64 Jan 7 |
| roll week_of_year -1 |
| check day_of_week Sat |
| check date Showa 64 Jan 7 |
| roll week_of_year 26 |
| check day_of_week Sat |
| check date Showa 64 Jan 7 |
| roll week_of_year -26 |
| check day_of_week Sat |
| check date Showa 64 Jan 7 |
| |
| # Heisei Gan-nen January 14 is Saturday. |
| set date Heisei 1 Jan 14 |
| roll week_of_year -1 |
| check day_of_week Sat |
| check date Heisei 1 Dec 30 |
| roll week_of_year 1 |
| check day_of_week Sat |
| check date Heisei 1 Jan 14 |
| roll week_of_year -26 |
| check day_of_week Sat |
| check date Heisei 1 Jul 8 |
| roll week_of_year 26 |
| check day_of_week Sat |
| check date Heisei 1 Jan 14 |
| |
| # Heisei Gan-nen December 1 is Friday. |
| set date Heisei 1 Dec 1 |
| roll week_of_year 5 |
| check day_of_week Fri |
| check date Heisei 1 Jan 13 |
| roll week_of_year -5 |
| check day_of_week Fri |
| check date Heisei 1 Dec 1 |
| roll week_of_year 55 |
| check day_of_week Fri |
| check date Heisei 1 Dec 29 |
| |
| use tokyocal |
| clear all |
| |
| set date BeforeMeiji $minyear Dec 25 |
| check day_of_week Sat |
| roll week_of_year 1 |
| check day_of_week Sat |
| check date BeforeMeiji $minyear May 22 |
| roll week_of_year -1 |
| check day_of_week Sat |
| check date BeforeMeiji $minyear Dec 25 |
| |
| test WEEK_OF_MONTH |
| # Needs to wait for 6191841 fix. (WEEK_OF_MONTH needs to change |
| # ERA and YEAR in a transition month.) |
| |
| test DAY_OF_MONTH |
| # Needs to wait for 6191841 fix. (DAY_OF_MONTH needs to change |
| # ERA and YEAR in a transition month.) |
| |
| test DAY_OF_YEAR |
| use jcal |
| clear all |
| |
| # 1867 is a regular Gregorian year. |
| set date BeforeMeiji 1867 Dec 31 |
| roll day_of_year 1 |
| check date BeforeMeiji 1867 Jan 1 |
| roll day_of_year -1 |
| check date BeforeMeiji 1867 Dec 31 |
| roll day_of_year 26 |
| check date BeforeMeiji 1867 Jan 26 |
| roll day_of_year -26 |
| check date BeforeMeiji 1867 Dec 31 |
| |
| # Meiji 1 starts from Jan 1. It's a regular year as well. |
| set date Meiji 1 Dec 31 |
| roll day_of_year 1 |
| check date Meiji 1 Jan 1 |
| roll day_of_year -1 |
| check date Meiji 1 Dec 31 |
| roll day_of_year 26 |
| check date Meiji 1 Jan 26 |
| roll day_of_year -26 |
| check date Meiji 1 Dec 31 |
| |
| # The last year of Meiji (45) has an irregularity. Meiji 45 |
| # July 30 is actually Taisho 1 July 30. |
| set date Meiji 45 Jul 29 |
| roll day_of_year 1 |
| check date Meiji 45 Jan 1 |
| roll day_of_year -1 |
| check date Meiji 45 Jul 29 |
| roll day_of_year 26 |
| check date Meiji 45 Jan 26 |
| roll day_of_year -26 |
| check date Meiji 45 Jul 29 |
| |
| # The first day of Taisho, July 30. |
| set date Taisho 1 Jul 30 |
| roll day_of_year -1 |
| check date Taisho 1 Dec 31 |
| roll day_of_year 1 |
| check date Taisho 1 Jul 30 |
| roll day_of_year 26 |
| check date Taisho 1 Aug 25 |
| roll day_of_year -26 |
| check date Taisho 1 Jul 30 |
| |
| set date Taisho 15 Jan 1 |
| roll day_of_year -1 |
| check date Taisho 15 Dec 24 |
| roll day_of_year 1 |
| check date Taisho 15 Jan 1 |
| |
| set date Showa 1 Dec 31 |
| roll day_of_year 1 |
| check date Showa 1 Dec 25 |
| roll day_of_year -1 |
| check date Showa 1 Dec 31 |
| roll day_of_year 26 |
| # 26 % 7 = 5 |
| check date Showa 1 Dec 29 |
| roll day_of_year -26 |
| check date Showa 1 Dec 31 |
| |
| set date Showa 64 Jan 7 |
| roll day_of_year 1 |
| check date Showa 64 Jan 1 |
| roll day_of_year -1 |
| check date Showa 64 Jan 7 |
| roll day_of_year 26 |
| # 26 % 7 = 5 |
| check date Showa 64 Jan 5 |
| roll day_of_year -26 |
| check date Showa 64 Jan 7 |
| |
| set date Heisei 1 Jan 8 |
| roll day_of_year -1 |
| check date Heisei 1 Dec 31 |
| roll day_of_year 1 |
| check date Heisei 1 Jan 8 |
| roll day_of_year -26 |
| check date Heisei 1 Dec 6 |
| roll day_of_year 26 |
| check date Heisei 1 Jan 8 |
| |
| set date Heisei 1 Dec 31 |
| roll day_of_year 5 |
| check date Heisei 1 Jan 12 |
| roll day_of_year -5 |
| check date Heisei 1 Dec 31 |
| roll day_of_year 55 |
| check date Heisei 1 Mar 3 |
| roll day_of_year -55 |
| check date Heisei 1 Dec 31 |
| |
| use tokyocal |
| clear all |
| |
| set date BeforeMeiji $minyear Dec 31 |
| set timeofday 1 47 4 192 |
| roll day_of_year 1 |
| check date BeforeMeiji $minyear May 17 |
| check timeofday 1 47 4 192 |
| roll day_of_year -1 |
| check date BeforeMeiji $minyear Dec 31 |
| check timeofday 1 47 4 192 |
| |
| test DAY_OF_WEEK_IN_MONTH |
| use jcal |
| clear all |