30fad2ce7d
Reviewed-by: naoto
522 lines
10 KiB
TypeScript
522 lines
10 KiB
TypeScript
#
|
|
# %i%
|
|
#
|
|
|
|
# The test cases in this file assume 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
|
|
|
|
set non-lenient
|
|
|
|
test add ERA
|
|
use jcal
|
|
clear all
|
|
set date NewEra 17 Mar 8
|
|
add era 10
|
|
# as of NewEra 17 March 8
|
|
check era NewEra
|
|
add era -100
|
|
check era BeforeMeiji
|
|
|
|
test add HOUR_OF_DAY
|
|
use jcal
|
|
clear all
|
|
set era Heisei
|
|
set datetime 1 Jan 8 23 59 59
|
|
add hour_of_day 1
|
|
check datetime 1 Jan 9 0 59 59
|
|
check ampm AM
|
|
check hour 0
|
|
add hour_of_day -1
|
|
check datetime 1 Jan 8 23 59 59
|
|
add hour_of_day 24
|
|
check datetime 1 Jan 9 23 59 59
|
|
add hour_of_day -24
|
|
check datetime 1 Jan 8 23 59 59
|
|
|
|
test add HOUR
|
|
use jcal
|
|
clear all
|
|
set era Showa
|
|
set datetime 64 Jan 7 11 59 59
|
|
check era Showa
|
|
check hour 11
|
|
check ampm AM
|
|
add hour 1
|
|
check hour 0
|
|
check ampm PM
|
|
check datetime 64 Jan 7 12 59 59
|
|
add hour -1
|
|
check datetime 64 Jan 7 11 59 59
|
|
add hour 240
|
|
check era Heisei
|
|
check datetime 1 Jan 17 11 59 59
|
|
add hour -240
|
|
check era Showa
|
|
check datetime 64 Jan 7 11 59 59
|
|
|
|
clear all
|
|
set era Showa
|
|
set datetime 64 Jan 7 23 59 59
|
|
check era Showa
|
|
check hour 11
|
|
check ampm PM
|
|
add hour 1
|
|
check hour 0
|
|
check ampm AM
|
|
check era Heisei
|
|
check datetime 1 Jan 8 0 59 59
|
|
add hour -1
|
|
check datetime 64 Jan 7 23 59 59
|
|
add hour 240
|
|
check era Heisei
|
|
check datetime 1 Jan 17 23 59 59
|
|
add hour -240
|
|
check era Showa
|
|
check datetime 64 Jan 7 23 59 59
|
|
|
|
clear all
|
|
set era Heisei
|
|
set datetime 1 Jan 8 23 59 59
|
|
check date Heisei 1 Jan 8
|
|
check hour 11
|
|
check ampm PM
|
|
add hour 1
|
|
check hour 0
|
|
check ampm AM
|
|
check era Heisei
|
|
check datetime 1 Jan 9 0 59 59
|
|
add hour -1
|
|
check datetime 1 Jan 8 23 59 59
|
|
add hour 240
|
|
check datetime 1 Jan 18 23 59 59
|
|
add hour -240
|
|
check datetime 1 Jan 8 23 59 59
|
|
|
|
test add YEAR
|
|
use jcal
|
|
clear all
|
|
# check if pinDayOfMonth works correctly.
|
|
# Heisei 12 (Y2K) is a leap year.
|
|
set date Heisei 12 Feb 29
|
|
add year 5
|
|
check date Heisei 17 Feb 28
|
|
add year -5
|
|
check date Heisei 12 Feb 28 # not 29!
|
|
|
|
clear all
|
|
set date BeforeMeiji 1867 Jan 1
|
|
add year 1
|
|
check date Meiji 1 Jan 1
|
|
add year -1
|
|
check date BeforeMeiji 1867 Jan 1
|
|
|
|
clear all
|
|
set date Meiji 45 Jul 29
|
|
add year 1
|
|
check date Taisho 2 Jul 29
|
|
add year -1
|
|
check date Meiji 45 Jul 29
|
|
|
|
clear all
|
|
set date Meiji 44 Jul 30
|
|
add year 1
|
|
check date Taisho 1 Jul 30
|
|
add year -1
|
|
check date Meiji 44 Jul 30
|
|
|
|
clear all
|
|
set date Taisho 15 Aug 1
|
|
add year 1
|
|
check date Showa 2 Aug 1
|
|
add year -1
|
|
check date Taisho 15 Aug 1
|
|
|
|
clear all
|
|
set date Taisho 14 Dec 31
|
|
add year 1
|
|
check date Showa 1 Dec 31
|
|
add year -1
|
|
check date Taisho 14 Dec 31
|
|
|
|
clear all
|
|
set date Showa 63 Feb 1
|
|
add year 1
|
|
check date Heisei 1 Feb 1
|
|
add year -1
|
|
check date Showa 63 Feb 1
|
|
|
|
set date Showa 63 Dec 30
|
|
add year 1
|
|
check date Heisei 1 Dec 30
|
|
add year -1
|
|
check date Showa 63 Dec 30
|
|
|
|
set date Showa 64 Jan 7
|
|
add year 1
|
|
check date Heisei 2 Jan 7
|
|
add year -1
|
|
check date Showa 64 Jan 7
|
|
|
|
set date Heisei 2 Jan 7
|
|
add year -1
|
|
check date Showa 64 Jan 7
|
|
add year 1
|
|
check date Heisei 2 Jan 7
|
|
|
|
test add MONTH
|
|
clear all
|
|
# Check pinDayOfMonth works correctly.
|
|
# Heisei 12 is a leap year.
|
|
set date Heisei 12 Jan 31
|
|
add month 1
|
|
check date Heisei 12 Feb 29
|
|
add month -1
|
|
check date Heisei 12 Jan 29
|
|
|
|
# Another leap year
|
|
set date Showa 63 Jan 31
|
|
add month 1
|
|
check date Showa 63 Feb 29
|
|
add month -1
|
|
check date Showa 63 Jan 29
|
|
|
|
# Non leap year
|
|
set date Heisei 15 Jan 31
|
|
add month 1
|
|
check date Heisei 15 Feb 28
|
|
add month -1
|
|
check date Heisei 15 Jan 28
|
|
|
|
set date Heisei 15 Mar 31
|
|
add month 1
|
|
check date Heisei 15 Apr 30
|
|
add month -1
|
|
check date Heisei 15 Mar 30
|
|
|
|
set date Heisei 15 May 31
|
|
add month 1
|
|
check date Heisei 15 Jun 30
|
|
add month -1
|
|
check date Heisei 15 May 30
|
|
|
|
set date Heisei 15 Aug 31
|
|
add month 1
|
|
check date Heisei 15 Sep 30
|
|
add month -1
|
|
check date Heisei 15 Aug 30
|
|
|
|
set date Heisei 15 Oct 31
|
|
add month 1
|
|
check date Heisei 15 Nov 30
|
|
add month -1
|
|
check date Heisei 15 Oct 30
|
|
|
|
set date Heisei 15 Dec 31
|
|
add month -1
|
|
check date Heisei 15 Nov 30
|
|
add month 1
|
|
check date Heisei 15 Dec 30
|
|
|
|
set date Heisei 15 Dec 31
|
|
add month 2
|
|
check date Heisei 16 Feb 29
|
|
add month -1
|
|
check date Heisei 16 Jan 29
|
|
|
|
# end of pinDayOfMonth tests
|
|
|
|
set date BeforeMeiji 1867 Dec 1
|
|
add month 1
|
|
check date Meiji 1 Jan 1
|
|
add month -1
|
|
check date BeforeMeiji 1867 Dec 1
|
|
add month 14
|
|
check date Meiji 2 Feb 1
|
|
add month -14
|
|
check date BeforeMeiji 1867 Dec 1
|
|
|
|
set date Meiji 1 Dec 1
|
|
add month 1
|
|
check date Meiji 2 Jan 1
|
|
add month -1
|
|
check date Meiji 1 Dec 1
|
|
add month 13
|
|
check date Meiji 3 Jan 1
|
|
add month -13
|
|
check date Meiji 1 Dec 1
|
|
|
|
set date Meiji 45 Jun 30
|
|
add month 1
|
|
check date Taisho 1 Jul 30
|
|
add month -1
|
|
check date Meiji 45 Jun 30
|
|
|
|
set date Meiji 45 Jun 30
|
|
add month 14
|
|
check date Taisho 2 Aug 30
|
|
add month -14
|
|
check date Meiji 45 Jun 30
|
|
|
|
# Taisho Gan-nen (year 1) has only 6 months.
|
|
set date Taisho 1 Jul 30
|
|
add month -1
|
|
check date Meiji 45 Jun 30
|
|
add month 1
|
|
check date Taisho 1 Jul 30
|
|
add month -18
|
|
check date Meiji 44 Jan 30
|
|
add month 18
|
|
check date Taisho 1 Jul 30
|
|
|
|
set date Taisho 15 Jan 20
|
|
add month 11
|
|
check date Taisho 15 Dec 20
|
|
|
|
set date Taisho 15 Jan 25
|
|
add month 11
|
|
check date Showa 1 Dec 25
|
|
|
|
set date Showa 1 Dec 25
|
|
add month 1
|
|
check date Showa 2 Jan 25
|
|
add month -1
|
|
check date Showa 1 Dec 25
|
|
add month 17
|
|
check date Showa 3 May 25
|
|
add month -17
|
|
check date Showa 1 Dec 25
|
|
|
|
set date Showa 64 Jan 7
|
|
add month 1
|
|
check date Heisei 1 Feb 7
|
|
|
|
set date Heisei 1 Feb 1
|
|
add month -1
|
|
# Heisei starts from Jan 8.
|
|
check date Showa 64 Jan 1
|
|
add month 1
|
|
check date Heisei 1 Feb 1
|
|
|
|
set date Heisei 1 Feb 8
|
|
add month -1
|
|
check date Heisei 1 Jan 8
|
|
|
|
set date Heisei 1 Dec 1
|
|
add month 1
|
|
check date Heisei 2 Jan 1
|
|
add month -1
|
|
check date Heisei 1 Dec 1
|
|
|
|
set date Heisei 1 Dec 8
|
|
add month 1
|
|
check date Heisei 2 Jan 8
|
|
add 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 17
|
|
set timeofday 1 47 4 192
|
|
add month -7
|
|
check date BeforeMeiji $minyear May 17
|
|
check timeofday 1 47 4 192
|
|
add month 7
|
|
check date BeforeMeiji $minyear Dec 17
|
|
check timeofday 1 47 4 192
|
|
set date BeforeMeiji $minyear Dec 17
|
|
set timeofday 1 47 4 191
|
|
add month -7
|
|
check date BeforeMeiji $minyear May 18
|
|
check timeofday 1 47 4 191
|
|
|
|
set date NewEra 17 Jan 1
|
|
get max year
|
|
assign $result $max
|
|
set date NewEra $max Jul 17
|
|
add month 1
|
|
check date NewEra $max Aug 17
|
|
# set date Heisei $max Jul 28
|
|
# set timeofday 23 59 59 999
|
|
# add month 1
|
|
# check date Heisei $max Aug 16
|
|
# check timeofday 23 59 59 999
|
|
|
|
test add WEEK_OF_YEAR
|
|
use jcal
|
|
clear all
|
|
# 1867 Dec 23 is Monday.
|
|
set date BeforeMeiji 1867 Dec 23
|
|
add week_of_year 2
|
|
check day_of_week Mon
|
|
check date Meiji 1 Jan 6
|
|
add week_of_year -2
|
|
check day_of_week Mon
|
|
check date BeforeMeiji 1867 Dec 23
|
|
|
|
# 1867 Dec 23 is Wednesday.
|
|
set date Meiji 1 Dec 23
|
|
add week_of_year 2
|
|
check day_of_week Wed
|
|
check date Meiji 2 Jan 6
|
|
add week_of_year -2
|
|
check day_of_week Wed
|
|
check date Meiji 1 Dec 23
|
|
|
|
# Meiji 45 July 23 is Tuesday.
|
|
set date Meiji 45 Jul 23
|
|
add week_of_year 1
|
|
check day_of_week Tue
|
|
check date Taisho 1 Jul 30
|
|
add week_of_year -1
|
|
check day_of_week Tue
|
|
check date Meiji 45 Jul 23
|
|
|
|
# Taisho 15 December 23 is Thursday.
|
|
set date Taisho 15 Dec 23
|
|
add week_of_year 1
|
|
check day_of_week Thu
|
|
check date Showa 1 Dec 30
|
|
add week_of_year -1
|
|
check day_of_week Thu
|
|
check date Taisho 15 Dec 23
|
|
|
|
# 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
|
|
add week_of_year 1
|
|
check day_of_week Thu
|
|
check date Showa 2 Jan 6
|
|
add week_of_year -1
|
|
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
|
|
add week_of_year 1
|
|
check day_of_week Sat
|
|
check date Heisei 1 Jan 14
|
|
add week_of_year -1
|
|
check day_of_week Sat
|
|
check date Showa 64 Jan 7
|
|
|
|
use tokyocal
|
|
clear all
|
|
|
|
set date BeforeMeiji $minyear Dec 25
|
|
check day_of_week Sat
|
|
eval $minyear + 1
|
|
assign $result $minyear_plus_1
|
|
add week_of_year 1
|
|
check day_of_week Sat
|
|
check date BeforeMeiji $minyear_plus_1 Jan 1
|
|
add week_of_year -1
|
|
check day_of_week Sat
|
|
check date BeforeMeiji $minyear Dec 25
|
|
|
|
test WEEK_OF_MONTH
|
|
use jcal
|
|
clear all
|
|
|
|
test DAY_OF_MONTH
|
|
use jcal
|
|
clear all
|
|
|
|
test DAY_OF_YEAR
|
|
use jcal
|
|
clear all
|
|
|
|
# 1867 is a regular Gregorian year.
|
|
set date BeforeMeiji 1867 Dec 31
|
|
add day_of_year 1
|
|
check date Meiji 1 Jan 1
|
|
add day_of_year -1
|
|
check date BeforeMeiji 1867 Dec 31
|
|
add day_of_year 26
|
|
check date Meiji 1 Jan 26
|
|
add 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
|
|
add day_of_year 1
|
|
check date Meiji 2 Jan 1
|
|
add day_of_year -1
|
|
check date Meiji 1 Dec 31
|
|
add day_of_year 26
|
|
check date Meiji 2 Jan 26
|
|
add 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
|
|
add day_of_year 1
|
|
check date Taisho 1 Jul 30
|
|
add day_of_year -1
|
|
check date Meiji 45 Jul 29
|
|
|
|
# The first day of Taisho, July 30.
|
|
set date Taisho 1 Jul 30
|
|
add day_of_year -1
|
|
check date Meiji 45 Jul 29
|
|
add day_of_year 1
|
|
check date Taisho 1 Jul 30
|
|
|
|
set date Taisho 15 Dec 24
|
|
add day_of_year 1
|
|
check date Showa 1 Dec 25
|
|
add day_of_year -1
|
|
check date Taisho 15 Dec 24
|
|
|
|
set date Showa 1 Dec 31
|
|
add day_of_year 1
|
|
check date Showa 2 Jan 1
|
|
add day_of_year -1
|
|
check date Showa 1 Dec 31
|
|
add day_of_year 25
|
|
check date Showa 2 Jan 25
|
|
add day_of_year -25
|
|
check date Showa 1 Dec 31
|
|
|
|
set date Showa 64 Jan 7
|
|
add day_of_year 1
|
|
check date Heisei 1 Jan 8
|
|
add day_of_year -1
|
|
check date Showa 64 Jan 7
|
|
|
|
set date Heisei 1 Dec 31
|
|
add day_of_year 5
|
|
check date Heisei 2 Jan 5
|
|
add day_of_year -5
|
|
check date Heisei 1 Dec 31
|
|
|
|
use tokyocal
|
|
clear all
|
|
|
|
set date BeforeMeiji $minyear Dec 31
|
|
set timeofday 1 47 4 192
|
|
add day_of_year 1
|
|
check date BeforeMeiji $minyear_plus_1 Jan 1
|
|
check timeofday 1 47 4 192
|
|
add 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
|