bea4109ef7
Reviewed-by: joehw, rriggs
593 lines
13 KiB
TypeScript
593 lines
13 KiB
TypeScript
#
|
|
#
|
|
#
|
|
|
|
# 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
|
|
use jcal
|
|
clear all
|
|
|
|
# Make sure this test does not throw AIOOBE
|
|
set date Heisei 1 Aug 1
|
|
roll week_of_month 1
|
|
check date Heisei 1 Aug 8
|
|
|
|
# Check transition dates
|
|
set date Showa 64 Jan 7
|
|
roll week_of_month 1
|
|
check date Showa 64 Jan 7
|
|
roll week_of_month -1
|
|
check date Showa 64 Jan 7
|
|
|
|
set date Heisei 1 Jan 31
|
|
roll week_of_month 1
|
|
check date Heisei 1 Jan 10
|
|
roll week_of_month -1
|
|
check date Heisei 1 Jan 31
|
|
|
|
test DAY_OF_MONTH
|
|
use jcal
|
|
clear all
|
|
|
|
# Make sure this test does not throw AIOOBE
|
|
Set date Heisei 1 Aug 1
|
|
roll day_of_month 1
|
|
check date Heisei 1 Aug 2
|
|
|
|
# Check transition dates
|
|
set date Showa 64 Jan 7
|
|
roll day_of_month 1
|
|
check date Showa 64 Jan 1
|
|
roll day_of_month -1
|
|
check date Showa 64 Jan 7
|
|
|
|
set date Heisei 1 Jan 31
|
|
roll day_of_month 1
|
|
check date Heisei 1 Jan 8
|
|
roll day_of_month -1
|
|
check date Heisei 1 Jan 31
|
|
|
|
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
|