Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
c601daa5
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
c601daa5
编写于
8月 09, 2018
作者:
X
xiaofeya
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8208656: Move java/util/Calendar/CalendarTestScripts tests into OpenJDK
Reviewed-by: naoto
上级
e7c0e340
变更
24
展开全部
隐藏空白更改
内联
并排
Showing
24 changed file
with
4843 addition
and
0 deletion
+4843
-0
test/java/util/Calendar/CalendarTestScripts/CalendarAdapter.java
...va/util/Calendar/CalendarTestScripts/CalendarAdapter.java
+437
-0
test/java/util/Calendar/CalendarTestScripts/CalendarTestEngine.java
...util/Calendar/CalendarTestScripts/CalendarTestEngine.java
+782
-0
test/java/util/Calendar/CalendarTestScripts/CalendarTestException.java
...l/Calendar/CalendarTestScripts/CalendarTestException.java
+36
-0
test/java/util/Calendar/CalendarTestScripts/Exceptions.java
test/java/util/Calendar/CalendarTestScripts/Exceptions.java
+46
-0
test/java/util/Calendar/CalendarTestScripts/GregorianAdapter.java
...a/util/Calendar/CalendarTestScripts/GregorianAdapter.java
+125
-0
test/java/util/Calendar/CalendarTestScripts/JapaneseRollDayOfWeekTestGenerator.java
...lendarTestScripts/JapaneseRollDayOfWeekTestGenerator.java
+131
-0
test/java/util/Calendar/CalendarTestScripts/JapaneseRollTests.java
.../util/Calendar/CalendarTestScripts/JapaneseRollTests.java
+88
-0
test/java/util/Calendar/CalendarTestScripts/JapaneseTests.java
...java/util/Calendar/CalendarTestScripts/JapaneseTests.java
+100
-0
test/java/util/Calendar/CalendarTestScripts/README
test/java/util/Calendar/CalendarTestScripts/README
+566
-0
test/java/util/Calendar/CalendarTestScripts/Result.java
test/java/util/Calendar/CalendarTestScripts/Result.java
+53
-0
test/java/util/Calendar/CalendarTestScripts/Symbol.java
test/java/util/Calendar/CalendarTestScripts/Symbol.java
+328
-0
test/java/util/Calendar/CalendarTestScripts/Variable.java
test/java/util/Calendar/CalendarTestScripts/Variable.java
+76
-0
test/java/util/Calendar/CalendarTestScripts/japanese/japanese.cts
...a/util/Calendar/CalendarTestScripts/japanese/japanese.cts
+331
-0
test/java/util/Calendar/CalendarTestScripts/japanese/japanese_add.cts
...il/Calendar/CalendarTestScripts/japanese/japanese_add.cts
+521
-0
test/java/util/Calendar/CalendarTestScripts/japanese/japanese_exceptions.cts
...ndar/CalendarTestScripts/japanese/japanese_exceptions.cts
+204
-0
test/java/util/Calendar/CalendarTestScripts/japanese/japanese_minmax.cts
...Calendar/CalendarTestScripts/japanese/japanese_minmax.cts
+336
-0
test/java/util/Calendar/CalendarTestScripts/japanese/japanese_normalization.cts
...r/CalendarTestScripts/japanese/japanese_normalization.cts
+97
-0
test/java/util/Calendar/CalendarTestScripts/japanese/japanese_roll.cts
...l/Calendar/CalendarTestScripts/japanese/japanese_roll.cts
+556
-0
test/java/util/Calendar/CalendarTestScripts/params/lenient.cts
...java/util/Calendar/CalendarTestScripts/params/lenient.cts
+5
-0
test/java/util/Calendar/CalendarTestScripts/params/non-lenient.cts
.../util/Calendar/CalendarTestScripts/params/non-lenient.cts
+5
-0
test/java/util/Calendar/CalendarTestScripts/timezones/tz_japan.cts
.../util/Calendar/CalendarTestScripts/timezones/tz_japan.cts
+5
-0
test/java/util/Calendar/CalendarTestScripts/timezones/tz_novosibirsk.cts
...Calendar/CalendarTestScripts/timezones/tz_novosibirsk.cts
+5
-0
test/java/util/Calendar/CalendarTestScripts/timezones/tz_pst.cts
...va/util/Calendar/CalendarTestScripts/timezones/tz_pst.cts
+5
-0
test/java/util/Calendar/CalendarTestScripts/timezones/tz_sydney.cts
...util/Calendar/CalendarTestScripts/timezones/tz_sydney.cts
+5
-0
未找到文件。
test/java/util/Calendar/CalendarTestScripts/CalendarAdapter.java
0 → 100644
浏览文件 @
c601daa5
/*
* Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import
java.util.Calendar
;
import
sun.util.calendar.CalendarUtils
;
public
class
CalendarAdapter
extends
Calendar
{
public
static
enum
Type
{
GREGORIAN
,
BUDDHIST
,
JAPANESE
;
}
static
final
String
[]
FIELD_NAMES
=
{
"ERA"
,
"YEAR"
,
"MONTH"
,
"WEEK_OF_YEAR"
,
"WEEK_OF_MONTH"
,
"DAY_OF_MONTH"
,
"DAY_OF_YEAR"
,
"DAY_OF_WEEK"
,
"DAY_OF_WEEK_IN_MONTH"
,
"AM_PM"
,
"HOUR"
,
"HOUR_OF_DAY"
,
"MINUTE"
,
"SECOND"
,
"MILLISECOND"
,
"ZONE_OFFSET"
,
"DST_OFFSET"
};
Calendar
cal
;
GregorianAdapter
gcal
;
private
Type
type
;
public
CalendarAdapter
(
Calendar
cal
)
{
if
(
cal
==
null
)
throw
new
NullPointerException
();
this
.
cal
=
cal
;
if
(
cal
instanceof
sun
.
util
.
BuddhistCalendar
)
{
type
=
Type
.
BUDDHIST
;
}
else
if
(
cal
instanceof
GregorianAdapter
)
{
type
=
Type
.
GREGORIAN
;
gcal
=
(
GregorianAdapter
)
cal
;
}
else
{
type
=
Type
.
JAPANESE
;
}
}
public
void
setFirstDayOfWeek
(
int
w
)
{
cal
.
setFirstDayOfWeek
(
w
);
}
public
int
getFirstDayOfWeek
()
{
return
cal
.
getFirstDayOfWeek
();
}
public
void
setMinimalDaysInFirstWeek
(
int
value
)
{
cal
.
setMinimalDaysInFirstWeek
(
value
);
}
public
int
getMinimalDaysInFirstWeek
()
{
return
getMinimalDaysInFirstWeek
();
}
public
long
getTimeInMillis
()
{
return
cal
.
getTimeInMillis
();
}
public
void
setTimeInMillis
(
long
millis
)
{
cal
.
setTimeInMillis
(
millis
);
}
public
int
get
(
int
field
)
{
return
cal
.
get
(
field
);
}
public
void
set
(
int
field
,
int
value
)
{
cal
.
set
(
field
,
value
);
}
public
void
add
(
int
field
,
int
amount
)
{
cal
.
add
(
field
,
amount
);
}
public
void
roll
(
int
field
,
boolean
dir
)
{
cal
.
roll
(
field
,
dir
);
}
public
void
roll
(
int
field
,
int
amount
)
{
cal
.
roll
(
field
,
amount
);
}
public
void
setDate
(
int
year
,
int
month
,
int
date
)
{
cal
.
set
(
year
,
month
,
date
);
}
public
void
setDate
(
int
era
,
int
year
,
int
month
,
int
date
)
{
cal
.
set
(
ERA
,
era
);
cal
.
set
(
year
,
month
,
date
);
}
public
void
setDateTime
(
int
year
,
int
month
,
int
date
,
int
hourOfDay
,
int
minute
,
int
second
)
{
cal
.
set
(
year
,
month
,
date
,
hourOfDay
,
minute
,
second
);
}
public
void
clearAll
()
{
cal
.
clear
();
}
public
void
clearField
(
int
field
)
{
cal
.
clear
(
field
);
}
public
boolean
isSetField
(
int
field
)
{
return
cal
.
isSet
(
field
);
}
public
int
getMaximum
(
int
field
)
{
return
cal
.
getMaximum
(
field
);
}
public
int
getLeastMaximum
(
int
field
)
{
return
cal
.
getLeastMaximum
(
field
);
}
public
int
getActualMaximum
(
int
field
)
{
return
cal
.
getActualMaximum
(
field
);
}
public
int
getMinimum
(
int
field
)
{
return
cal
.
getMinimum
(
field
);
}
public
int
getGreatestMinimum
(
int
field
)
{
return
cal
.
getGreatestMinimum
(
field
);
}
public
int
getActualMinimum
(
int
field
)
{
return
cal
.
getActualMinimum
(
field
);
}
public
void
setLenient
(
boolean
lenient
)
{
cal
.
setLenient
(
lenient
);
}
public
String
toString
()
{
return
cal
.
toString
();
}
protected
void
computeFields
()
{
}
protected
void
computeTime
()
{
}
void
setTimeOfDay
(
int
hourOfDay
,
int
minute
,
int
second
,
int
ms
)
{
cal
.
set
(
HOUR_OF_DAY
,
hourOfDay
);
cal
.
set
(
MINUTE
,
minute
);
cal
.
set
(
SECOND
,
second
);
cal
.
set
(
MILLISECOND
,
ms
);
}
// GregorianAdapter specific methods
// When gcal is null, the methods throw a NPE.
int
getSetStateFields
()
{
return
gcal
.
getSetStateFields
();
}
int
[]
getFields
()
{
return
gcal
.
getFields
();
}
boolean
checkInternalDate
(
int
year
,
int
month
,
int
dayOfMonth
)
{
return
gcal
.
checkInternalDate
(
year
,
month
,
dayOfMonth
);
}
boolean
checkInternalDate
(
int
year
,
int
month
,
int
dayOfMonth
,
int
dayOfWeek
)
{
return
gcal
.
checkInternalDate
(
year
,
month
,
dayOfMonth
,
dayOfWeek
);
}
boolean
checkInternalField
(
int
field
,
int
expectedValue
)
{
return
checkInternalField
(
field
,
expectedValue
);
}
// check methods
boolean
checkAllSet
()
{
initTest
();
for
(
int
i
=
0
;
i
<
FIELD_COUNT
;
i
++)
{
checkFieldState
(
i
,
true
);
}
return
getStatus
();
}
boolean
checkMaximum
(
int
field
,
int
expectedValue
)
{
int
val
;
if
((
val
=
getMaximum
(
field
))
!=
expectedValue
)
{
appendMessage
(
"getMaximum("
+
FIELD_NAMES
[
field
]+
"): got "
+
val
+
" expected "
+
expectedValue
);
}
return
getStatus
();
}
boolean
checkActualMaximum
(
int
field
,
int
expectedValue
)
{
int
val
;
if
((
val
=
getActualMaximum
(
field
))
!=
expectedValue
)
{
appendMessage
(
"getActualMaximum("
+
FIELD_NAMES
[
field
]+
"): got "
+
val
+
" expected "
+
expectedValue
);
}
return
getStatus
();
}
boolean
checkLeastMaximum
(
int
field
,
int
expectedValue
)
{
int
val
;
if
((
val
=
getLeastMaximum
(
field
))
!=
expectedValue
)
{
appendMessage
(
"getLeastMaximum("
+
FIELD_NAMES
[
field
]+
"): got "
+
val
+
" expected "
+
expectedValue
);
}
return
getStatus
();
}
boolean
checkMinimum
(
int
field
,
int
expectedValue
)
{
int
val
;
if
((
val
=
getMinimum
(
field
))
!=
expectedValue
)
{
appendMessage
(
"getMinimum("
+
FIELD_NAMES
[
field
]+
"): got "
+
val
+
" expected "
+
expectedValue
);
}
return
getStatus
();
}
boolean
checkActualMinimum
(
int
field
,
int
expectedValue
)
{
int
val
;
if
((
val
=
getActualMinimum
(
field
))
!=
expectedValue
)
{
appendMessage
(
"getActualMinimum("
+
FIELD_NAMES
[
field
]+
"): got "
+
val
+
" expected "
+
expectedValue
);
}
return
getStatus
();
}
boolean
checkGreatestMinimum
(
int
field
,
int
expectedValue
)
{
int
val
;
if
((
val
=
getGreatestMinimum
(
field
))
!=
expectedValue
)
{
appendMessage
(
"getGreatestMinimum("
+
FIELD_NAMES
[
field
]+
"): got "
+
val
+
" expected "
+
expectedValue
);
}
return
getStatus
();
}
boolean
checkDate
(
int
year
,
int
month
,
int
dayOfMonth
)
{
initTest
();
checkField
(
YEAR
,
year
);
checkField
(
MONTH
,
month
);
checkField
(
DAY_OF_MONTH
,
dayOfMonth
);
return
getStatus
();
}
boolean
checkDate
(
int
era
,
int
year
,
int
month
,
int
dayOfMonth
)
{
initTest
();
checkField
(
ERA
,
era
);
checkField
(
YEAR
,
year
);
checkField
(
MONTH
,
month
);
checkField
(
DAY_OF_MONTH
,
dayOfMonth
);
return
getStatus
();
}
boolean
checkDateTime
(
int
year
,
int
month
,
int
dayOfMonth
,
int
hourOfDay
,
int
minute
,
int
second
)
{
initTest
();
checkField
(
YEAR
,
year
);
checkField
(
MONTH
,
month
);
checkField
(
DAY_OF_MONTH
,
dayOfMonth
);
checkField
(
HOUR_OF_DAY
,
hourOfDay
);
checkField
(
MINUTE
,
minute
);
checkField
(
SECOND
,
second
);
return
getStatus
();
}
boolean
checkDateTime
(
int
year
,
int
month
,
int
dayOfMonth
,
int
hourOfDay
,
int
minute
,
int
second
,
int
ms
)
{
initTest
();
checkField
(
YEAR
,
year
);
checkField
(
MONTH
,
month
);
checkField
(
DAY_OF_MONTH
,
dayOfMonth
);
checkField
(
HOUR_OF_DAY
,
hourOfDay
);
checkField
(
MINUTE
,
minute
);
checkField
(
SECOND
,
second
);
checkField
(
MILLISECOND
,
ms
);
return
getStatus
();
}
boolean
checkTimeOfDay
(
int
hourOfDay
,
int
minute
,
int
second
,
int
ms
)
{
initTest
();
checkField
(
HOUR_OF_DAY
,
hourOfDay
);
checkField
(
MINUTE
,
minute
);
checkField
(
SECOND
,
second
);
checkField
(
MILLISECOND
,
ms
);
return
getStatus
();
}
boolean
checkMillis
(
long
millis
)
{
initTest
();
long
t
=
cal
.
getTimeInMillis
();
if
(
t
!=
millis
)
{
appendMessage
(
"wrong millis: got "
+
t
+
", expected "
+
millis
);
return
false
;
}
return
true
;
}
boolean
checkFieldState
(
int
field
,
boolean
expectedState
)
{
if
(
isSet
(
field
)
!=
expectedState
)
{
appendMessage
(
FIELD_NAMES
[
field
]
+
" state is not "
+
expectedState
+
"; "
);
return
false
;
}
return
true
;
}
boolean
checkField
(
int
field
,
int
expectedValue
)
{
int
val
;
if
((
val
=
get
(
field
))
!=
expectedValue
)
{
appendMessage
(
"get("
+
FIELD_NAMES
[
field
]
+
"): got "
+
val
+
", expected "
+
expectedValue
+
"; "
);
return
false
;
}
return
true
;
}
static
final
String
fieldName
(
int
field
)
{
return
FIELD_NAMES
[
field
];
}
String
toDateString
()
{
StringBuffer
sb
=
new
StringBuffer
();
String
[]
eraNames
=
null
;
switch
(
type
)
{
case
GREGORIAN:
eraNames
=
new
String
[]
{
"BCE"
,
""
};
break
;
case
BUDDHIST:
eraNames
=
new
String
[]
{
"Before BE"
,
"BE"
};
break
;
case
JAPANESE:
eraNames
=
new
String
[]
{
"BeforeMeiji"
,
"Meiji"
,
"Taisho"
,
"Showa"
,
"Heisei"
,
"NewEra"
};
break
;
}
sb
.
append
(
eraNames
[
cal
.
get
(
ERA
)]);
if
(
sb
.
length
()
>
0
)
sb
.
append
(
' '
);
CalendarUtils
.
sprintf0d
(
sb
,
cal
.
get
(
YEAR
),
4
).
append
(
'-'
);
CalendarUtils
.
sprintf0d
(
sb
,
cal
.
get
(
MONTH
)+
1
,
2
).
append
(
'-'
);
CalendarUtils
.
sprintf0d
(
sb
,
cal
.
get
(
DAY_OF_MONTH
),
2
);
return
sb
.
toString
();
}
String
toTimeString
()
{
StringBuffer
sb
=
new
StringBuffer
();
CalendarUtils
.
sprintf0d
(
sb
,
cal
.
get
(
HOUR_OF_DAY
),
2
).
append
(
':'
);
CalendarUtils
.
sprintf0d
(
sb
,
cal
.
get
(
MINUTE
),
2
).
append
(
':'
);
CalendarUtils
.
sprintf0d
(
sb
,
cal
.
get
(
SECOND
),
2
).
append
(
'.'
);
CalendarUtils
.
sprintf0d
(
sb
,
cal
.
get
(
MILLISECOND
),
3
);
int
zoneOffset
=
cal
.
get
(
ZONE_OFFSET
)
+
cal
.
get
(
DST_OFFSET
);
if
(
zoneOffset
==
0
)
{
sb
.
append
(
'Z'
);
}
else
{
int
offset
;
char
sign
;
if
(
zoneOffset
>
0
)
{
offset
=
zoneOffset
;
sign
=
'+'
;
}
else
{
offset
=
-
zoneOffset
;
sign
=
'-'
;
}
offset
/=
60000
;
sb
.
append
(
sign
);
CalendarUtils
.
sprintf0d
(
sb
,
offset
/
60
,
2
);
CalendarUtils
.
sprintf0d
(
sb
,
offset
%
60
,
2
);
}
return
sb
.
toString
();
}
String
toDateTimeString
()
{
return
toDateString
()
+
"T"
+
toTimeString
();
}
// Message handling
StringBuffer
msg
=
new
StringBuffer
();
private
void
initTest
()
{
msg
=
new
StringBuffer
();
}
String
getMessage
()
{
String
s
=
msg
.
toString
();
msg
=
new
StringBuffer
();
return
" "
+
s
;
}
private
void
setMessage
(
String
msg
)
{
this
.
msg
=
new
StringBuffer
(
msg
);
}
private
void
appendMessage
(
String
msg
)
{
this
.
msg
.
append
(
msg
);
}
boolean
getStatus
()
{
return
msg
.
length
()
==
0
;
}
}
test/java/util/Calendar/CalendarTestScripts/CalendarTestEngine.java
0 → 100644
浏览文件 @
c601daa5
此差异已折叠。
点击以展开。
test/java/util/Calendar/CalendarTestScripts/CalendarTestException.java
0 → 100644
浏览文件 @
c601daa5
/*
* Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
public
class
CalendarTestException
extends
RuntimeException
{
public
CalendarTestException
()
{
super
();
}
public
CalendarTestException
(
String
msg
)
{
super
(
msg
);
}
public
CalendarTestException
(
String
msg
,
Throwable
t
)
{
super
(
msg
,
t
);
}
}
test/java/util/Calendar/CalendarTestScripts/Exceptions.java
0 → 100644
浏览文件 @
c601daa5
/*
* Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import
java.util.HashMap
;
import
java.util.Locale
;
import
java.util.Map
;
public
class
Exceptions
{
private
static
Map
<
String
,
Class
>
exceptions
=
new
HashMap
<
String
,
Class
>();
static
{
put
(
"nullpointerexception"
,
NullPointerException
.
class
);
put
(
"illegalargumentexception"
,
IllegalArgumentException
.
class
);
}
private
static
void
put
(
String
key
,
Class
clazz
)
{
Class
c
=
exceptions
.
put
(
key
,
clazz
);
if
(
c
!=
null
)
{
throw
new
RuntimeException
(
key
+
" already exisits"
);
}
}
public
static
Class
get
(
String
key
)
{
return
exceptions
.
get
(
key
.
toLowerCase
(
Locale
.
ROOT
));
}
}
test/java/util/Calendar/CalendarTestScripts/GregorianAdapter.java
0 → 100644
浏览文件 @
c601daa5
/*
* Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import
java.util.GregorianCalendar
;
import
java.util.Locale
;
import
java.util.TimeZone
;
public
class
GregorianAdapter
extends
GregorianCalendar
{
static
final
int
ALL_FIELDS
=
(
1
<<
FIELD_COUNT
)
-
1
;
public
GregorianAdapter
()
{
super
();
}
public
GregorianAdapter
(
TimeZone
tz
)
{
super
(
tz
);
}
public
GregorianAdapter
(
Locale
loc
)
{
super
(
loc
);
}
public
GregorianAdapter
(
TimeZone
tz
,
Locale
loc
)
{
super
(
tz
,
loc
);
}
public
void
computeTime
()
{
super
.
computeTime
();
}
public
void
computeFields
()
{
super
.
computeFields
();
}
public
void
complete
()
{
super
.
complete
();
}
StringBuffer
msg
=
new
StringBuffer
();
void
initTest
()
{
msg
=
new
StringBuffer
();
}
String
getMessage
()
{
String
s
=
msg
.
toString
();
msg
=
new
StringBuffer
();
return
" "
+
s
;
}
void
setMessage
(
String
msg
)
{
this
.
msg
=
new
StringBuffer
(
msg
);
}
void
appendMessage
(
String
msg
)
{
this
.
msg
.
append
(
msg
);
}
boolean
getStatus
()
{
return
msg
.
length
()
==
0
;
}
int
getSetStateFields
()
{
int
mask
=
0
;
for
(
int
i
=
0
;
i
<
FIELD_COUNT
;
i
++)
{
if
(
isSet
(
i
))
{
mask
|=
1
<<
i
;
}
}
return
mask
;
}
int
[]
getFields
()
{
int
[]
fds
=
new
int
[
fields
.
length
];
System
.
arraycopy
(
fields
,
0
,
fds
,
0
,
fds
.
length
);
return
fds
;
}
boolean
checkInternalDate
(
int
year
,
int
month
,
int
dayOfMonth
)
{
initTest
();
checkInternalField
(
YEAR
,
year
);
checkInternalField
(
MONTH
,
month
);
checkInternalField
(
DAY_OF_MONTH
,
dayOfMonth
);
return
getStatus
();
}
boolean
checkInternalDate
(
int
year
,
int
month
,
int
dayOfMonth
,
int
dayOfWeek
)
{
initTest
();
checkInternalField
(
YEAR
,
year
);
checkInternalField
(
MONTH
,
month
);
checkInternalField
(
DAY_OF_MONTH
,
dayOfMonth
);
checkInternalField
(
DAY_OF_WEEK
,
dayOfWeek
);
return
getStatus
();
}
boolean
checkInternalField
(
int
field
,
int
expectedValue
)
{
int
val
;
if
((
val
=
internalGet
(
field
))
!=
expectedValue
)
{
appendMessage
(
"internalGet("
+
CalendarAdapter
.
FIELD_NAMES
[
field
]
+
"): got "
+
val
+
", expected "
+
expectedValue
+
"; "
);
return
false
;
}
return
true
;
}
}
test/java/util/Calendar/CalendarTestScripts/JapaneseRollDayOfWeekTestGenerator.java
0 → 100644
浏览文件 @
c601daa5
/*
* Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import
java.io.PrintWriter
;
import
java.nio.file.Path
;
import
java.nio.file.Paths
;
import
java.util.GregorianCalendar
;
import
java.util.Locale
;
import
static
java
.
util
.
Calendar
.*;
public
class
JapaneseRollDayOfWeekTestGenerator
{
private
static
final
String
[]
ERAS
=
{
"BeforeMeiji"
,
"Meiji"
,
"Taisho"
,
"Showa"
,
"Heisei"
};
private
static
final
String
[]
DAYOFWEEK
=
{
null
,
"Sun"
,
"Mon"
,
"Tue"
,
"Wed"
,
"Thu"
,
"Fri"
,
"Sat"
};
private
static
final
int
[]
DAYOFMONTH
=
{
25
,
26
,
27
,
28
,
29
,
30
,
31
,
1
,
2
,
3
,
4
,
5
,
6
,
7
};
private
static
final
int
DOM_BASE
=
7
;
//Usage: JapaneseRollDayOfWeekTestGenerator will generate test script into
// file rolldow.cts.
public
static
void
generateTestScript
(
String
[]
args
)
throws
Exception
{
Locale
.
setDefault
(
Locale
.
ROOT
);
//This test generator assumes that Heisei has (nYears - 1) or more years.
int
nYears
=
(
args
.
length
==
1
)
?
Math
.
max
(
3
,
Math
.
min
(
Integer
.
parseInt
(
args
[
0
]),
40
))
:
28
;
// Start from Showa 63
int
era
=
3
;
int
year
=
63
;
Path
testPath
=
Paths
.
get
(
System
.
getProperty
(
"test.classes"
));
String
scFileName
=
testPath
+
"/rolldow.cts"
;
try
(
PrintWriter
out
=
new
PrintWriter
(
scFileName
)){
out
.
println
(
"locale ja JP JP\n"
+
"new instance jcal\n"
+
"use jcal"
);
for
(
int
y
=
0
;
y
<
nYears
;
y
++)
{
out
.
printf
(
"\nTest %s %d\n"
,
ERAS
[
era
],
year
);
for
(
int
fdw
=
SUNDAY
;
fdw
<=
SATURDAY
;
fdw
++)
{
int
endFdw
=
fdw
+
6
;
if
(
endFdw
>
SATURDAY
)
{
endFdw
-=
7
;
}
for
(
int
mdifw
=
1
;
mdifw
<=
7
;
mdifw
++)
{
int
domIndex
=
DOM_BASE
;
out
.
println
(
" clear all"
);
out
.
printf
(
" set FirstDayOfWeek %s\n"
,
DAYOFWEEK
[
fdw
]);
out
.
printf
(
" set MinimalDaysInFirstWeek %d\n"
,
mdifw
);
out
.
printf
(
" set date %s %d Jan 1\n"
,
ERAS
[
era
],
year
);
out
.
println
(
" get week_of_year\n"
+
" assign $result $woy"
);
out
.
println
(
" get day_of_week\n"
+
" assign $result $doy"
);
int
gyear
=
year
+
(
year
>=
60
?
1925
:
1988
);
int
next
=
new
GregorianCalendar
(
gyear
,
JANUARY
,
1
).
get
(
DAY_OF_WEEK
);
for
(
int
i
=
0
;
i
<
10
;
i
++)
{
out
.
println
(
" roll day_of_week 1"
);
next
=
nextFdw
(
next
,
fdw
,
endFdw
);
if
(
next
==
fdw
)
{
domIndex
-=
6
;
}
else
{
domIndex
++;
}
int
dom
=
DAYOFMONTH
[
domIndex
];
out
.
printf
(
"\tcheck date %d %s %d%n"
,
(
dom
>=
25
)
?
year
-
1
:
year
,
(
dom
>=
25
)
?
"Dec"
:
"Jan"
,
dom
);
out
.
println
(
"\teval $doy + 1"
);
out
.
println
(
"\tassign $result $doy"
);
out
.
println
(
"\tassign Sun $doy if $doy > Sat"
);
out
.
println
(
"\tcheck day_of_week $doy"
);
out
.
println
(
"\tcheck week_of_year $woy"
);
}
for
(
int
i
=
0
;
i
<
10
;
i
++)
{
out
.
println
(
"\troll day_of_week -1"
);
out
.
println
(
"\teval $doy - 1"
);
out
.
println
(
"\tassign $result $doy"
);
out
.
println
(
"\tassign Sat $doy if $doy < Sun"
);
out
.
println
(
"\tcheck day_of_week $doy"
);
out
.
println
(
"\tcheck week_of_year $woy"
);
}
}
}
if
(
year
==
64
&&
era
==
3
)
{
era
++;
year
=
2
;
}
else
{
year
++;
}
}
}
}
private
static
int
nextFdw
(
int
x
,
int
start
,
int
end
)
{
if
(
x
==
end
)
return
start
;
x
++;
if
(
x
>
SATURDAY
)
x
=
SUNDAY
;
return
x
;
}
}
test/java/util/Calendar/CalendarTestScripts/JapaneseRollTests.java
0 → 100644
浏览文件 @
c601daa5
/*
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @summary tests Japanese Calendar.
* @bug 4609228
* @modules java.base/sun.util
* java.base/sun.util.calendar
* @compile
* CalendarAdapter.java
* CalendarTestEngine.java
* CalendarTestException.java
* Exceptions.java
* GregorianAdapter.java
* Result.java
* Symbol.java
* Variable.java
* JapaneseRollDayOfWeekTestGenerator.java
* @run main/timeout=120/othervm JapaneseRollTests
*/
import
java.io.File
;
import
java.io.FilenameFilter
;
import
java.nio.file.Path
;
import
java.nio.file.Paths
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
public
class
JapaneseRollTests
{
private
static
List
<
String
>
TZ_TEST_LIST
=
Arrays
.
asList
(
"tz_japan.cts"
,
"tz_pst.cts"
);
private
static
Path
srcPath
=
Paths
.
get
(
System
.
getProperty
(
"test.src"
));
private
static
Path
testPath
=
Paths
.
get
(
System
.
getProperty
(
"test.classes"
));
public
static
void
main
(
String
[]
args
)
throws
Throwable
{
List
<
String
>
modeList
=
getFileNameList
(
"params"
);
//Test only 3 years by default
String
[]
jpyear
={
"3"
};
JapaneseRollDayOfWeekTestGenerator
.
generateTestScript
(
jpyear
);
for
(
String
tz
:
TZ_TEST_LIST
)
{
for
(
String
mode:
modeList
){
String
[]
ts
=
{
srcPath
+
"/timezones/"
+
tz
,
srcPath
+
"/params/"
+
mode
,
testPath
+
"/rolldow.cts"
};
CalendarTestEngine
.
main
(
ts
);
}
}
}
private
static
List
<
String
>
getFileNameList
(
String
type
){
List
<
String
>
fileList
=
new
ArrayList
<>();
File
dir
=
new
File
(
srcPath
+
"/"
+
type
);
File
[]
testFiles
=
dir
.
listFiles
(
new
FilenameFilter
()
{
public
boolean
accept
(
File
dir
,
String
name
)
{
return
name
.
toLowerCase
().
endsWith
(
".cts"
);
}
});
for
(
File
f:
testFiles
)
{
fileList
.
add
(
f
.
getName
());
}
return
fileList
;
}
}
test/java/util/Calendar/CalendarTestScripts/JapaneseTests.java
0 → 100644
浏览文件 @
c601daa5
/*
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @summary tests Japanese Calendar.
* @bug 4609228
* @modules java.base/sun.util
* java.base/sun.util.calendar
* @compile
* CalendarAdapter.java
* CalendarTestEngine.java
* CalendarTestException.java
* Exceptions.java
* GregorianAdapter.java
* Result.java
* Symbol.java
* Variable.java
* @run main/othervm/timeout=120 JapaneseTests
*/
import
java.io.File
;
import
java.io.FilenameFilter
;
import
java.nio.file.Path
;
import
java.nio.file.Paths
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
public
class
JapaneseTests
{
private
static
List
<
String
>
SET_LENIENT
=
Arrays
.
asList
(
"japanese_minmax.cts"
,
"japanese_add.cts"
,
"japanese_roll.cts"
,
"japanese_exceptions.cts"
);
private
static
List
<
String
>
DEFAULT_LENIENT
=
Arrays
.
asList
(
"japanese.cts"
,
"japanese_normalization.cts"
);
private
static
Path
srcPath
=
Paths
.
get
(
System
.
getProperty
(
"test.src"
));
public
static
void
main
(
String
[]
args
)
throws
Throwable
{
List
<
String
>
tzList
=
getFileNameList
(
"timezones"
);
List
<
String
>
modeList
=
getFileNameList
(
"params"
);
for
(
String
jaTest:
DEFAULT_LENIENT
)
{
for
(
String
tz
:
tzList
)
{
String
[]
ts
=
{
srcPath
+
"/timezones/"
+
tz
,
srcPath
+
"/japanese/"
+
jaTest
};
CalendarTestEngine
.
main
(
ts
);
}
}
for
(
String
jaTest:
SET_LENIENT
)
{
for
(
String
tz
:
tzList
)
{
for
(
String
mode
:
modeList
)
{
String
[]
ts
=
{
srcPath
+
"/timezones/"
+
tz
,
srcPath
+
"/params/"
+
mode
,
srcPath
+
"/japanese/"
+
jaTest
};
CalendarTestEngine
.
main
(
ts
);
}
}
}
}
private
static
List
<
String
>
getFileNameList
(
String
type
){
List
<
String
>
fileList
=
new
ArrayList
<>();
File
dir
=
new
File
(
srcPath
+
"/"
+
type
);
File
[]
testFiles
=
dir
.
listFiles
(
new
FilenameFilter
()
{
public
boolean
accept
(
File
dir
,
String
name
)
{
return
name
.
toLowerCase
().
endsWith
(
".cts"
);
}
});
for
(
File
f:
testFiles
)
{
fileList
.
add
(
f
.
getName
());
}
return
fileList
;
}
}
test/java/util/Calendar/CalendarTestScripts/README
0 → 100644
浏览文件 @
c601daa5
Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation.
This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
version 2 for more details (a copy is included in the LICENSE file that
accompanied this code).
You should have received a copy of the GNU General Public License version
2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
or visit www.oracle.com if you need additional information or have any
questions.
CALENDAR TEST SCRIPT
Masayoshi Okutsu
2005-03-18
Introduction
------------
Calendar Test Script is a simple scripting language to describe test cases
for java.util.Calendar and its subclasses. It should be much more
productive to use this script language than writing test programs in Java.
A script looks like below.
1 locale ja JP JP
2 timezone Asia/Tokyo
3 new instance jcal
4 test day of week on Heisei 1 Jan 8
5 use jcal
6 clear all
7 set date Heisei 1 Jan 8
8 check day_of_week Sun
The first line defines a Locale to be used for creating Calendar
instances. Line 2 defines the current TimeZone to be Asia/Tokyo that is
used creating Calendar instances. Line 3 creates a Calendar instance with
the Locale and TimeZone instances. Its reference name is `jcal'. Line 4
indicates a start point for a test case with a short test case
description. Line 5 designates `jcal' as the current Calendar
instance. All calendar operation commands are applied to the current
Calendar instance. Line 6 clears all of the calendar fields (e.g., ERA,
YEAR, MONTH, etc.). Line 7 sets the ERA, YEAR, MONTH and DAY_OF_MONTH
fields to Heisei, 1, JANUARY and 8, respectively. Line 8 checks if the
DAY_OF_WEEK value is SUNDAY. If it's not, then a RuntimeException is
thrown.
Script Grammar
--------------
A line is a comment, blank or command line. Any text after '#' is always
treated as a comment and ignored, like a shell script.
# This is a comment line.
A command line consists of a command and its parameters, optionally
followed by a comment. For example,
set date Heisei 1 Jan 8 # The first day of Heisei
`set' is a command to set `date' to Heisei year 1 January 8th. `Heisei' is
a constant for the Japanese Heisei era value which is consistent with the
Japanese imperial calendar implementation. `Jan' is a constant for
Calendar.SUNDAY. The text after '#' is ignored.
Keywords are case-insensitive.
set DAY_OF_WEEK MON
SET day_of_week Mon
are the same thing.
Lexical analysis is very simple. A command must be complete in a single
line. Keywords and symbols must be separated by white space. For example,
"$result+1" is parsed as one token. It must be written as "$result + 1".
Variables
---------
Variables can be used in any context to store an integer value and are
referenced in any contexts where an integer value is required. A variable
name must start with a '$', such as `$maxyear'. The integer value is
handled as a long.
`$result' is reserved for storing a result of a get commend operation. For
example, executing the following command:
get day_of_month
sets $result to the get(Calendar.DAY_OF_MONTH) value of the current
Calendar instance. (See NEW and USE commands for the current Calendar
instance.)
Commands
--------
The following defines each command and its syntax. Keywords are described
in upper case below.
LOCALE language [country [variant]]
Creates a Locale instance by calling new Locale(language, country,
variant). country and variant are optional. Defining LOCALE overrides
the previously defined Locale value if any. The initial Locale value
is Locale.getDefault().
TIMEZONE tzid
Creates a TimeZone instance by calling
TimeZone.getTimeZone(tzid). Defining TIMEZONE overrides the previously
defined Locale value if any. The initial TimeZone value is
TimeZone.getDefault().
NEW INSTANCE calendarname
Creates a Calendar instance by calling Calendar.getInstance(TimeZone,
Locale). TimeZone and Locale are those defined by TIMEZONE and LOCALE
commands (or their initial values), respectively. The instance is
associated with `calendarname' and becomes the current Calendar
instance to be used for testing.
NEW GREGORIAN calendarname
Creates a Calendar instance by calling new GregorianCalendar(TimeZone,
Locale). TimeZone and Locale are those defined by TIMEZONE and LOCALE
commands (or their initial values), respectively. The instance is
associated with `calendarname' and becomes the current Calendar
instance to be used for testing.
TEST [comments...]
Declares the beginning of a test case. `comments...' gives a short
description of a test case. (Multiple lines are not supported.) The
test system displays `comments...' to System.out. For example, the
following command:
test A test case for non-lenient mode
will output:
Test #n: A test case for non-lenient mode
where `n' is a sequence number of TEST command lines appeared in a
test script file.
USE calendarname
Specifies the current Calendar instance to use for testing by
`calendarname'. If you need to use more than one Calendar instances,
then you have to switch those Calendar instances by the USE command.
ASSIGN value variable
Assigns `value' to `variable'. `value' can be an integer literal, a
variable name or a constant. Examples are:
assign 2005 $year
assign $result $temp
assign Sun $Microsystems
ASSIGN value variable IF condition
Assigns `value' to `variable' if `condition' is true. `condition' is a
relational expression as:
value1 relOp value2
`relOp' must be one of >, >=, ==, !=, <=, <.
EVAL expression
Evaluates the given *simple* expression and assigns the expression
value to $result if `op' is one of the arithmetic operators (+, -, *,
/, %). If `op' is one of the relational operators (>, >=, ==, !=, <=,
<), then EVAL throws an exception if the expression value is false, or
does nothing if the value is true. Note that an operator and values
must be separated by white space.
The following is an example of the ASSIGN and EVAL commands usage to
get the next day of week value. Then, it's used to check the
roll(DAY_OF_WEEK) result.
get day_of_week
eval $result + 1
assign $result $nextDayOfWeek
assign Sun $nextDayOfWeek if $nextDayOfWeek > Sat
roll day_of_week 1
check day_of_week $nextDayOfWeek
CLEAR ALL
Clears all the calendar fields of the current Calendar instance by
calling Calendar.clear().
CLEAR field
Clears the specified calendar `field' of the current Calendar instance
by calling Calendar.clear(field).`field' must be one of the Calendar
field indices, ERA, YEAR, MONTH, DAY_OF_MONTH, WEEK_OF_YEAR, etc.
GET MILLIS
Gets the millisecond value of the current Calendar instance by calling
Calendar.getTimeInMillis(). The value is assigned to $result.
GET field
Gets the `field' value specified of the current Calendar instance by
calling Calendar.get(field). The value is assigned to $result.
GET MIN field
Gets the minimum value of the specified `field' of the current
Calendar instance by calling Calendar.getMinimum(field). The value is
assigned to $result.
GET GREATESTMIN field
Gets the greatest minimum value of the specified `field' of the
current Calendar instance by calling
Calendar.getGreatestMinimum(field). The value is assigned to $result.
GET ACTUALMIN field
Gets the actual minimum value of the specified `field' of the current
Calendar instance by calling Calendar.getActualMinimum(field). The
value is assigned to $result.
GET MAX field
Gets the maximum value of the specified `field' of the current
Calendar instance by calling Calendar.getMaximum(field). The value is
assigned to $result.
GET LEASTMAX field
Gets the least maximum value of the specified `field' of the current
Calendar instance by calling Calendar.getLeastMaximum(field). The
value is assigned to $result.
GET ACTUALMAX field
Gets the actual maximum value of the specified `field' of the current
Calendar instance by calling Calendar.getActualMaximum(field). The
value is assigned to $result.
GET FIRSTDAYOFWEEK
Gets the first day of week value of the current Calendar instance by
calling Calendar.getFirstDayOfWeek(). The value is assigned to
$result.
GET MINIMALDAYSINFIRSTWEEK
Gets the minimal days in first week value of the current Calendar
instance by calling Calendar.getMinimalDaysInFirstWeek(). The value is
assigned to $result.
ADD field amount
Adds `amount' to the specified `field' of the current Calendar
instance by calling Calendar.add(field, amount).
ROLL field amount
Rolls `amount' of the specified `field' of the current Calendar
instance by calling Calendar.roll(field, amount).
SET MILLIS value
Sets the millisecond value of the current Calendar instance to `value'
by calling Calendar.setTimeInMillis(value).
SET field value
Sets the `field' value of the current Calendar instance to `value' by
calling Calendar.set(field, value).
SET DATE era year month dayOfMonth
Sets the date of the current Calendar instance to the date specified
by `era', `year', `month' and `dayOfMonth' by calling
Calendar.set(ERA, era) and Calendar.set(year, month,
dayOfMonth). Please note that `month' follows the Calendar convention
and is 0-based. (e.g., JANUARY is 0)
SET DATE year month dayOfMonth
Sets the date of the current Calendar instance to the date specified
by `year', `month' and `dayOfMonth' by calling
Calendar.set(year, month, dayOfMont). Please note that `month'
follows the Calendar convention and is 0-based. (e.g., JANUARY is 0)
SET DATETIME year month dayOfMonth hourOfDay minute second
Sets the date and time of the current Calendar instance to the date
and time specified by `year', `month', `dayOfMonth', `hourOfDay',
`minute', and `second' by calling Calendar.set(year, month,
dayOfMonth, hourOfDay, minute, second). Please note that `hourOfDay'
is the 24-hour clock.
SET TIMEOFDAY hourOfDay minute second millisecond
Sets the date and time of the current Calendar instance to the date
and time specified by `year', `month', `dayOfMonth', `hourOfDay',
`minute', and `second' by calling Calendar.set(HOUR_OF_DAY,
hourOfDay), Calendar.set(MINUTE, minute), and Calendar.set(SECOND,
second).
SET FIRSTDAYOFWEEK value
Sets the first day of week value of the current Calendar instance to
`value' by calling Calendar.setFirstDayOfWeek(value).
SET MINIMALDAYSINFIRSTWEEK value
Sets the minimal days in the first week value of the current Calendar
instance to `value' by calling Calendar.setMinimalDaysInFirstWeek(value).
SET LENIENT
Sets the lenient mode in the current Calendar instance by calling
Calendar.setLenient(true).
SET NON-LENIENT
Sets the non-lenient mode in the current Calendar instance by calling
Calendar.setLenient(false).
CHECK MILLIS value
Checks if the specified `value' is the same as the millisecond value
of the current Calendar instance given by calling
Calendar.getTimeInMillis(). If the values are different, an exception
is thrown.
CHECK DATE era year month dayOfMonth
Checks if the date specified by `era', `year', `month' and
`dayOfMonth' is the same date of the current Calendar instance. The
calendar date is given by calling Calendar.get(ERA),
Calendar.get(YEAR), Calendar.get(MONTH), and
Calendar.get(DAY_OF_MONTH). If the dates are different, an exception
is thrown.
CHECK DATE year month dayOfMonth
Checks if the date specified by `year', `month' and `dayOfMonth' is
the same date of the current Calendar instance. The calendar date is
given by calling Calendar.get(YEAR), Calendar.get(MONTH), and
Calendar.get(DAY_OF_MONTH). If the dates are different, an exception
is thrown.
CHECK DATETIME year month dayOfMonth hourOfDay minute second
Checks if the date and time specified by `year', `month',
`dayOfMonth', `hourOfDay', `minute', and `second' are the same ones of
the current Calendar instance. The calendar date and time are given by
calling Calendar.get(YEAR), Calendar.get(MONTH),
Calendar.get(DAY_OF_MONTH), Calendar.get(HOUR_OF_DAY),
Calendar.get(MINUTE) and Calendar.get(SECOND). If the dates or times
are different, an exception is thrown.
CHECK DATETIME year month dayOfMonth hourOfDay minute second millisecond
Checks if the date and time specified by `year', `month',
`dayOfMonth', `hourOfDay', `minute', `second' and `millisecond' are
the same ones of the current Calendar instance. The calendar date and
time are given by calling Calendar.get(YEAR), Calendar.get(MONTH),
Calendar.get(DAY_OF_MONTH), Calendar.get(HOUR_OF_DAY),
Calendar.get(MINUTE), Calendar.get(SECOND) and
Calendar.get(MILLISECOND). If the dates or times are different, an
exception is thrown.
CHECK TIMEOFDAY hourOfDay minute second millisecond
Checks if the time of day specified by `hourOfDay', `minute', `second'
and `millisecond' are the same ones of the current Calendar
instance. The calendar date and time are given by calling
Calendar.get(HOUR_OF_DAY), Calendar.get(MINUTE), Calendar.get(SECOND)
and Calendar.get(MILLISECOND). If the times are different, an
exception is thrown.
CHECK field value
Checks if the value of the given `field' of the current Calendar
instance is equal to the given `value'. If it doesn't, an exception is
thrown.
CHECK MIN field value
Checks if the minimum value of the specified `field' of the current
Calendar instance is equal to the specified `value'. If not, an
exception is thrown.
CHECK GREATESTMIN field value
Checks if the greatest minimum value of the specified `field' of the
current Calendar instance is equal to the specified `value'. If not,
an exception is thrown.
CHECK ACTUALMIN field value
Checks if the actual minimum value of the specified `field' of the
current Calendar instance is equal to the specified `value'. If not,
an exception is thrown.
CHECK MAX field value
Checks if the maximum value of the specified `field' of the current
Calendar instance is equal to the specified `value'. If not, an
exception is thrown.
CHECK LEASTMAX field value
Checks if the least maximum value of the specified `field' of the
current Calendar instance is equal to the specified `value'. If not,
an exception is thrown.
CHECK ACTUALMAX field value
Checks if the actual maximum value of the specified `field' of the
current Calendar instance is equal to the specified `value'. If not,
an exception is thrown.
EXCEPTION exceptionname
Checks if the previous command threw the specified exception by
`exceptionname'. For example, the following tests invalid date
detection in non-lenient.
set non-lenient
set date 2005 Feb 29 # 2005 isn't a leap year.
get millis
exception IllegalArgumentException
PRINT variable
Prints the value of `variable'.
PRINT INSTANCE [calendarname]
Prints the Calendar.toString() value of the current Calendar instance
or the instance given by `calendarname'.
PRINT field
Prints the value of the specified `field' of the current Calendar
instance. The value is obtained by calling Calendar.get(field).
PRINT MILLIS
Prints the millisecond value of the current Calendar instance. The
value is obtained by calling Calendar.getTimeInMillis().
PRINT MIN field
Prints the minimum value of the specified field by `field' of the
current Calendar instance. The value is obtained by calling
Calendar.getMinimum(field).
PRINT GREATESTMIN field
Prints the greatest minimum value of the specified field by `field' of
the current Calendar instance. The value is obtained by calling
Calendar.getGreatestMinimum(field).
PRINT ACTUALMIN field
Prints the actual minimum value of the specified field by `field' of
the current Calendar instance by calling
Calendar.getActualMinimum(field).
PRINT MAX field
Prints the maximum value of the specified field by `field' of the
current Calendar instance. The value is obtained by calling
Calendar.getMaximum(field).
PRINT LEASTMAX field
Prints the least maximum value of the specified field by `field' of
the current Calendar instance. The value is obtained by calling
Calendar.getLeastMaximum(field).
PRINT ACTUALMAX field
Prints the actual maximum value of the specified field by `field' of
the current Calendar instance. The value is obtained by calling
Calendar.getActualMaximum(field).
PRINT DATE
Prints the date of the current Calendar instance in format
"[ERA] yyyy-MM-dd". The date is obtained by calling Calendar.get(ERA),
Calendar.get(YEAR), Calendar.get(MONTH), and
Calendar.get(DAY_OF_MONTH).
PRINT DATETIME
Prints the date and time of the current Calendar instance in an ISO
8601-style format "[ERA] yyyy-MM-ddTHH:mm:ss.SSS{Z|{+|-}hhmm}". The
date and time are obtained by calling Calendar.get(ERA),
Calendar.get(YEAR), Calendar.get(MONTH), Calendar.get(DAY_OF_MONTH),
Calendar.get(HOUR_OF_DAY), Calendar.get(MINUTE), Calendar.get(SECOND),
Calendar.get(MILLISECOND), Calendar.get(ZONE_OFFSET), and
Calendar.get(DST_OFFSET).
PRINT TIMEZONE
Prints the toString() value of the current TimeZone.
PRINT LOCALE
Prints the toString() value of the current Locale.
Usage
-----
The usage of the test script system at this directory is:
$ javac -d classes --add-exports java.base/sun.util=ALL-UNNAMED --add-exports java.base/sun.util.calendar=ALL-UNNAMED *.java
$ java -cp classes CalendarTestEngine scriptfiles...
A script file has suffix ".cts" by convention. If multiple script files
are specified. Those files are sequentially executed as if those are a
single test script. For example, if we have the following script files:
file1.cts:
locale ja JP JP
timezone Asia/Tokyo
file2.cts:
new instance jcal
new gregorian gcal
test example
use jcal
print datetime
get millis
print $result
use gcal
set millis $result
print datetime
running CalendarTestEngine with those files will produce:
$ java -cp classes CalendarTestEngine file1.cts file2.cts
Starting file1.cts...
Completed file1.cts
Starting file2.cts...
Test #1: example
file2.cts:5: Heisei 0017-03-18T20:00:25.402+0900
file2.cts:7: $result=1111143625402
file2.cts:10: 2005-03-18T20:00:25.402+0900
Completed file2.cts
[end of README]
test/java/util/Calendar/CalendarTestScripts/Result.java
0 → 100644
浏览文件 @
c601daa5
/*
* Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
public
class
Result
extends
Variable
{
private
Exception
e
;
private
int
lineno
;
public
Result
()
{
super
(
"$result"
,
0
);
put
(
"$result"
,
this
);
}
public
void
setLineno
(
int
lineno
)
{
this
.
lineno
=
lineno
;
}
public
int
getLineno
()
{
return
lineno
;
}
public
void
setException
(
Exception
e
)
{
if
(
this
.
e
!=
null
)
{
throw
new
RuntimeException
(
"existing exception: "
+
e
,
e
);
}
this
.
e
=
e
;
}
public
Exception
getException
()
{
Exception
e
=
this
.
e
;
this
.
e
=
null
;
return
e
;
}
}
test/java/util/Calendar/CalendarTestScripts/Symbol.java
0 → 100644
浏览文件 @
c601daa5
/*
* Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import
java.util.HashMap
;
import
java.util.Locale
;
import
java.util.Map
;
import
static
java
.
util
.
Calendar
.*;
import
static
java
.
util
.
GregorianCalendar
.*;
public
class
Symbol
{
private
static
Map
<
String
,
Symbol
>
symbols
;
String
name
;
Type
type
;
int
value
;
boolean
isArithmetic
;
private
Symbol
(
Type
type
,
Integer
value
)
{
this
(
type
,
value
,
false
);
}
private
Symbol
(
Type
type
)
{
this
(
type
,
null
,
false
);
}
private
Symbol
(
Type
type
,
boolean
isArithmetic
)
{
this
(
type
,
null
,
isArithmetic
);
}
private
Symbol
(
Type
type
,
Integer
value
,
boolean
isArithmetic
)
{
this
.
name
=
type
.
toString
().
toLowerCase
(
Locale
.
ROOT
);
this
.
type
=
type
;
if
(
value
!=
null
)
this
.
value
=
value
;
this
.
isArithmetic
=
isArithmetic
;
}
public
int
value
()
{
return
value
;
}
public
String
toString
()
{
return
type
.
name
();
}
public
boolean
isArithmetic
()
{
return
isArithmetic
;
}
public
static
Symbol
get
(
String
s
)
{
return
symbols
.
get
(
s
);
}
public
static
enum
Type
{
// Directives
TEST
,
// Commands
LOCALE
,
TIMEZONE
,
NEW
,
USE
,
ASSIGN
,
EVAL
,
CLEAR
,
SET
,
GET
,
ADD
,
ROLL
,
CHECK
,
PRINT
,
EXCEPTION
,
IF
,
// Operands
INSTANCE
,
GREGORIAN
,
ALL
,
MILLIS
,
DATE
,
DATETIME
,
TIMEOFDAY
,
LENIENT
,
NONLENIENT
,
MINIMUM
,
GREATESTMINIMUM
,
ACTUALMINIMUM
,
MAXIMUM
,
LEASTMAXIMUM
,
ACTUALMAXIMUM
,
FIRSTDAYOFWEEK
,
MINIMALDAYSINFIRSTWEEK
,
// Arithmetic operators
PLUS
,
MINUS
,
MULTIPLY
,
DIVIDE
,
MOD
,
// Relational operators
GT
,
GE
,
EQ
,
NEQ
,
LE
,
LT
,
// Calendar field indices
FIELD
,
// Day of week
DAYOFWEEK
,
// Month
MONTH
,
// AM/PM
AMPM
,
// Era values
ERA
;
}
private
static
final
void
put
(
String
key
,
Symbol
sym
)
{
Symbol
s
=
symbols
.
put
(
key
,
sym
);
if
(
s
!=
null
)
{
throw
new
RuntimeException
(
"duplicated key: "
+
key
);
}
}
static
{
symbols
=
new
HashMap
<
String
,
Symbol
>();
Symbol
sym
;
// Directives
put
(
"test"
,
new
Symbol
(
Type
.
TEST
));
// Commands
put
(
"locale"
,
new
Symbol
(
Type
.
LOCALE
));
sym
=
new
Symbol
(
Type
.
TIMEZONE
);
put
(
"tz"
,
sym
);
put
(
"timezone"
,
sym
);
put
(
"new"
,
new
Symbol
(
Type
.
NEW
));
put
(
"use"
,
new
Symbol
(
Type
.
USE
));
put
(
"assign"
,
new
Symbol
(
Type
.
ASSIGN
));
put
(
"eval"
,
new
Symbol
(
Type
.
EVAL
));
put
(
"clear"
,
new
Symbol
(
Type
.
CLEAR
));
put
(
"set"
,
new
Symbol
(
Type
.
SET
));
put
(
"get"
,
new
Symbol
(
Type
.
GET
));
put
(
"add"
,
new
Symbol
(
Type
.
ADD
));
put
(
"roll"
,
new
Symbol
(
Type
.
ROLL
));
put
(
"check"
,
new
Symbol
(
Type
.
CHECK
));
put
(
"print"
,
new
Symbol
(
Type
.
PRINT
));
put
(
"exception"
,
new
Symbol
(
Type
.
EXCEPTION
));
put
(
"throw"
,
get
(
"exception"
));
put
(
"if"
,
new
Symbol
(
Type
.
IF
));
// Operands
put
(
"instance"
,
new
Symbol
(
Type
.
INSTANCE
));
put
(
"gregorian"
,
new
Symbol
(
Type
.
GREGORIAN
));
put
(
"all"
,
new
Symbol
(
Type
.
ALL
));
put
(
"millis"
,
new
Symbol
(
Type
.
MILLIS
));
put
(
"date"
,
new
Symbol
(
Type
.
DATE
));
put
(
"datetime"
,
new
Symbol
(
Type
.
DATETIME
));
put
(
"timeofday"
,
new
Symbol
(
Type
.
TIMEOFDAY
));
put
(
"lenient"
,
new
Symbol
(
Type
.
LENIENT
));
sym
=
new
Symbol
(
Type
.
NONLENIENT
);
put
(
"non-lenient"
,
sym
);
put
(
"nonlenient"
,
sym
);
put
(
"firstdayofweek"
,
new
Symbol
(
Type
.
FIRSTDAYOFWEEK
));
put
(
"minimaldaysinfirstweek"
,
new
Symbol
(
Type
.
MINIMALDAYSINFIRSTWEEK
));
sym
=
new
Symbol
(
Type
.
MINIMUM
);
put
(
"minimum"
,
sym
);
put
(
"min"
,
sym
);
sym
=
new
Symbol
(
Type
.
GREATESTMINIMUM
);
put
(
"greatestminimum"
,
sym
);
put
(
"greatestmin"
,
sym
);
sym
=
new
Symbol
(
Type
.
ACTUALMINIMUM
);
put
(
"actualminimum"
,
sym
);
put
(
"actualmin"
,
sym
);
sym
=
new
Symbol
(
Type
.
MAXIMUM
);
put
(
"maximum"
,
sym
);
put
(
"max"
,
sym
);
sym
=
new
Symbol
(
Type
.
LEASTMAXIMUM
);
put
(
"leastmaximum"
,
sym
);
put
(
"leastmax"
,
sym
);
sym
=
new
Symbol
(
Type
.
ACTUALMAXIMUM
);
put
(
"actualmaximum"
,
sym
);
put
(
"actualmax"
,
sym
);
// Arithmetic operators
put
(
"+"
,
new
Symbol
(
Type
.
PLUS
,
true
));
put
(
"-"
,
new
Symbol
(
Type
.
MINUS
,
true
));
put
(
"*"
,
new
Symbol
(
Type
.
MULTIPLY
,
true
));
put
(
"/"
,
new
Symbol
(
Type
.
DIVIDE
,
true
));
put
(
"%"
,
new
Symbol
(
Type
.
MOD
,
true
));
// Relational operators
put
(
">"
,
new
Symbol
(
Type
.
GT
,
false
));
put
(
">="
,
new
Symbol
(
Type
.
GE
,
false
));
put
(
"=="
,
new
Symbol
(
Type
.
EQ
,
false
));
put
(
"!="
,
new
Symbol
(
Type
.
NEQ
,
false
));
put
(
"<="
,
new
Symbol
(
Type
.
LE
,
false
));
put
(
"<"
,
new
Symbol
(
Type
.
LT
,
false
));
// Calendar Fields
put
(
"era"
,
new
Symbol
(
Type
.
FIELD
,
ERA
));
put
(
"year"
,
new
Symbol
(
Type
.
FIELD
,
YEAR
));
put
(
"month"
,
new
Symbol
(
Type
.
FIELD
,
MONTH
));
sym
=
new
Symbol
(
Type
.
FIELD
,
WEEK_OF_YEAR
);
put
(
"week_of_year"
,
sym
);
put
(
"weekofyear"
,
sym
);
put
(
"woy"
,
sym
);
sym
=
new
Symbol
(
Type
.
FIELD
,
WEEK_OF_MONTH
);
put
(
"week_of_month"
,
sym
);
put
(
"weekofmonth"
,
sym
);
put
(
"wom"
,
sym
);
sym
=
new
Symbol
(
Type
.
FIELD
,
DAY_OF_MONTH
);
put
(
"day_of_month"
,
sym
);
put
(
"dayofmonth"
,
sym
);
put
(
"dom"
,
sym
);
sym
=
new
Symbol
(
Type
.
FIELD
,
DAY_OF_YEAR
);
put
(
"day_of_year"
,
sym
);
put
(
"dayofyear"
,
sym
);
put
(
"doy"
,
sym
);
sym
=
new
Symbol
(
Type
.
FIELD
,
DAY_OF_WEEK
);
put
(
"day_of_week"
,
sym
);
put
(
"dayofweek"
,
sym
);
put
(
"dow"
,
sym
);
sym
=
new
Symbol
(
Type
.
FIELD
,
DAY_OF_WEEK_IN_MONTH
);
put
(
"day_of_week_in_month"
,
sym
);
put
(
"dayofweekinmonth"
,
sym
);
put
(
"dowim"
,
sym
);
sym
=
new
Symbol
(
Type
.
FIELD
,
AM_PM
);
put
(
"am_pm"
,
sym
);
put
(
"ampm"
,
sym
);
put
(
"hour"
,
new
Symbol
(
Type
.
FIELD
,
HOUR
));
sym
=
new
Symbol
(
Type
.
FIELD
,
HOUR_OF_DAY
);
put
(
"hour_of_day"
,
sym
);
put
(
"hourofday"
,
sym
);
put
(
"hod"
,
sym
);
put
(
"minute"
,
new
Symbol
(
Type
.
FIELD
,
MINUTE
));
put
(
"second"
,
new
Symbol
(
Type
.
FIELD
,
SECOND
));
put
(
"millisecond"
,
new
Symbol
(
Type
.
FIELD
,
MILLISECOND
));
sym
=
new
Symbol
(
Type
.
FIELD
,
ZONE_OFFSET
);
put
(
"zone_offset"
,
sym
);
put
(
"zoneoffset"
,
sym
);
put
(
"zo"
,
sym
);
sym
=
new
Symbol
(
Type
.
FIELD
,
DST_OFFSET
);
put
(
"dst_offset"
,
sym
);
put
(
"dstoffset"
,
sym
);
put
(
"do"
,
sym
);
// Day of week
sym
=
new
Symbol
(
Type
.
DAYOFWEEK
,
SUNDAY
);
put
(
"sunday"
,
sym
);
put
(
"sun"
,
sym
);
sym
=
new
Symbol
(
Type
.
DAYOFWEEK
,
MONDAY
);
put
(
"monday"
,
sym
);
put
(
"mon"
,
sym
);
sym
=
new
Symbol
(
Type
.
DAYOFWEEK
,
TUESDAY
);
put
(
"tuesday"
,
sym
);
put
(
"tue"
,
sym
);
sym
=
new
Symbol
(
Type
.
DAYOFWEEK
,
WEDNESDAY
);
put
(
"wednesday"
,
sym
);
put
(
"wed"
,
sym
);
sym
=
new
Symbol
(
Type
.
DAYOFWEEK
,
THURSDAY
);
put
(
"thursday"
,
sym
);
put
(
"thu"
,
sym
);
sym
=
new
Symbol
(
Type
.
DAYOFWEEK
,
FRIDAY
);
put
(
"friday"
,
sym
);
put
(
"fri"
,
sym
);
sym
=
new
Symbol
(
Type
.
DAYOFWEEK
,
SATURDAY
);
put
(
"saturday"
,
sym
);
put
(
"sat"
,
sym
);
// Month
sym
=
new
Symbol
(
Type
.
MONTH
,
JANUARY
);
put
(
"january"
,
sym
);
put
(
"jan"
,
sym
);
sym
=
new
Symbol
(
Type
.
MONTH
,
FEBRUARY
);
put
(
"february"
,
sym
);
put
(
"feb"
,
sym
);
sym
=
new
Symbol
(
Type
.
MONTH
,
MARCH
);
put
(
"march"
,
sym
);
put
(
"mar"
,
sym
);
sym
=
new
Symbol
(
Type
.
MONTH
,
APRIL
);
put
(
"april"
,
sym
);
put
(
"apr"
,
sym
);
sym
=
new
Symbol
(
Type
.
MONTH
,
MAY
);
put
(
"may"
,
sym
);
sym
=
new
Symbol
(
Type
.
MONTH
,
JUNE
);
put
(
"june"
,
sym
);
put
(
"jun"
,
sym
);
sym
=
new
Symbol
(
Type
.
MONTH
,
JULY
);
put
(
"july"
,
sym
);
put
(
"jul"
,
sym
);
sym
=
new
Symbol
(
Type
.
MONTH
,
AUGUST
);
put
(
"august"
,
sym
);
put
(
"aug"
,
sym
);
sym
=
new
Symbol
(
Type
.
MONTH
,
SEPTEMBER
);
put
(
"september"
,
sym
);
put
(
"sep"
,
sym
);
sym
=
new
Symbol
(
Type
.
MONTH
,
OCTOBER
);
put
(
"octobwe"
,
sym
);
put
(
"oct"
,
sym
);
sym
=
new
Symbol
(
Type
.
MONTH
,
NOVEMBER
);
put
(
"november"
,
sym
);
put
(
"nov"
,
sym
);
sym
=
new
Symbol
(
Type
.
MONTH
,
DECEMBER
);
put
(
"december"
,
sym
);
put
(
"dec"
,
sym
);
sym
=
new
Symbol
(
Type
.
MONTH
,
UNDECIMBER
);
put
(
"undecimber"
,
sym
);
// AM/PM
put
(
"am"
,
new
Symbol
(
Type
.
AMPM
,
AM
));
put
(
"pm"
,
new
Symbol
(
Type
.
AMPM
,
PM
));
// Eras
// Julian eras
sym
=
new
Symbol
(
Type
.
ERA
,
BC
);
put
(
"bc"
,
sym
);
put
(
"bce"
,
sym
);
sym
=
new
Symbol
(
Type
.
ERA
,
AD
);
put
(
"ad"
,
sym
);
put
(
"ce"
,
sym
);
// Buddhist era
put
(
"be"
,
new
Symbol
(
Type
.
ERA
,
1
));
// Japanese imperial eras
sym
=
new
Symbol
(
Type
.
ERA
,
0
);
put
(
"before_meiji"
,
sym
);
put
(
"beforemeiji"
,
sym
);
put
(
"meiji"
,
new
Symbol
(
Type
.
ERA
,
1
));
put
(
"taisho"
,
new
Symbol
(
Type
.
ERA
,
2
));
put
(
"showa"
,
new
Symbol
(
Type
.
ERA
,
3
));
put
(
"heisei"
,
new
Symbol
(
Type
.
ERA
,
4
));
put
(
"newera"
,
new
Symbol
(
Type
.
ERA
,
5
));
}
}
test/java/util/Calendar/CalendarTestScripts/Variable.java
0 → 100644
浏览文件 @
c601daa5
/*
* Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import
java.util.HashMap
;
import
java.util.Locale
;
import
java.util.Map
;
public
class
Variable
{
private
static
Map
<
String
,
Variable
>
vars
=
new
HashMap
<
String
,
Variable
>();
private
String
name
;
private
long
value
;
Variable
(
String
name
,
long
value
)
{
this
.
name
=
name
;
this
.
value
=
value
;
}
public
String
getName
()
{
return
name
;
}
public
int
intValue
()
{
if
(
value
>
Integer
.
MAX_VALUE
||
value
<
Integer
.
MIN_VALUE
)
{
throw
new
RuntimeException
(
"Overflow/Underflow: "
+
value
);
}
return
(
int
)
value
;
}
public
long
longValue
()
{
return
value
;
}
public
void
setValue
(
int
v
)
{
value
=
v
;
}
public
void
setValue
(
long
v
)
{
value
=
v
;
}
// static methods
public
static
Variable
newVar
(
String
name
,
long
value
)
{
if
(
name
.
charAt
(
0
)
!=
'$'
)
{
throw
new
RuntimeException
(
"wrong var name: "
+
name
);
}
String
s
=
name
.
toLowerCase
(
Locale
.
ROOT
);
Variable
v
=
new
Variable
(
name
,
value
);
put
(
name
,
v
);
return
v
;
}
static
void
put
(
String
s
,
Variable
var
)
{
vars
.
put
(
s
,
var
);
}
public
static
Variable
get
(
String
name
)
{
return
vars
.
get
(
name
);
}
}
test/java/util/Calendar/CalendarTestScripts/japanese/japanese.cts
0 → 100644
浏览文件 @
c601daa5
#
#
#
locale ja JP JP
new instance jcal
new gregorian gcal
test Default dates
# Default for all unset fields
# 1970-01-01T00:00:00.000 local time (Gregorian)
# which is equivalent to Showa 45.
use gcal
clear all
get millis
# get the default milliseconds from the Epoch. It's time zone
# dependent.
assign $result $defmillis
use jcal
clear all
get millis
eval $result == $defmillis
check era Showa
check datetime 45 Jan 1 0 0 0
check millisecond 0
# If each era is set, then January 1 of each Gan-nen is the
# default.
clear all
set era BeforeMeiji
check era BeforeMeiji
check datetime 1 Jan 1 0 0 0
check millisecond 0
clear all
set era Meiji
check era Meiji
check datetime 1 Jan 1 0 0 0
check millisecond 0
clear all
set era Taisho
check era Meiji
check datetime 45 Jan 1 0 0 0
check millisecond 0
clear all
set era Showa
check era Taisho
check datetime 15 Jan 1 0 0 0
check millisecond 0
clear all
set era Heisei
check era Showa
check datetime 64 Jan 1 0 0 0
check millisecond 0
clear all
set era NewEra
check era Heisei
check datetime 31 Jan 1 0 0 0
check millisecond 0
#
# Field resolution tests
#
clear all
get firstdayofweek
# The test cases below assume that the first day of week is
# Sunday. So we should make sure it is.
eval $result == Sun
assign $result $fdow
test Field resolution: YEAR + MONTH + WEEK_OF_MONTH + DAY_OF_WEEK
set era Showa
set year 64
set week_of_month 1
check day_of_week $fdow
check date 64 Jan 1
clear all
set era Showa
set year 64
set week_of_month 1
set day_of_week Thu
check era Showa
check day_of_week Thu
check date 64 Jan 5
clear all
# Heise 1 January and Showa 64 January are the same month. Its
# first week should be the same week. (January is the default
# month.)
set era Heisei
set year 1
set week_of_month 1
check day_of_week $fdow
check era Showa
check date 64 Jan 1
# Test aggregation
clear all
set date Heisei 17 Mar 16
set week_of_month 1
set day_of_week Tue
check date Heisei 17 Mar 1
clear all
set week_of_month 1
set date Heisei 17 Mar 16
set day_of_week Tue
check date Heisei 17 Mar 1
clear all
set day_of_week Tue
set date Heisei 17 Mar 16
set week_of_month 1
check date Heisei 17 Mar 1
clear all
set day_of_week Tue
set date Heisei 17 Mar 16
set week_of_year 10
set week_of_month 1
check date Heisei 17 Mar 1
clear all
set day_of_week Tue
set date Heisei 17 Mar 16
set day_of_year 300
set week_of_month 1
check date Heisei 17 Mar 1
test Field resolution: YEAR + MONTH + DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK
clear all
set era Meiji
set year 45
set month Jul
set day_of_week_in_month 5
set day_of_week Mon
check date Meiji 45 Jul 29
clear all
set era Meiji
set year 45
set month Jul
set day_of_week_in_month 4
check date Meiji 45 Jul 28
clear all
set era Meiji
set year 45
set month Jul
set day_of_week_in_month 5
set day_of_week Tue
check date Taisho 1 Jul 30
clear all
set era Taisho
set year 1
set month Jul
set day_of_week_in_month 1
set day_of_week Tue
check date Meiji 45 Jul 2
# Test aggregation
clear all
set date Heisei 17 Mar 16
set day_of_week_in_month 1
set day_of_week Wed
check date Heisei 17 Mar 2
clear all
set day_of_week_in_month 1
set date Heisei 17 Mar 16
set day_of_week Wed
check date Heisei 17 Mar 2
clear all
set day_of_week Wed
set date Heisei 17 Mar 16
set day_of_week_in_month 1
check date Heisei 17 Mar 2
clear all
set day_of_week Wed
set date Heisei 17 Mar 16
set week_of_month 4
set day_of_week_in_month 1
check date Heisei 17 Mar 2
clear all
set day_of_week Wed
set date Heisei 17 Mar 16
set day_of_year 365
set day_of_week_in_month 1
check date Heisei 17 Mar 2
clear all
set day_of_week Wed
set date Heisei 17 Mar 16
set week_of_year 50
set day_of_week_in_month 1
check date Heisei 17 Mar 2
test Field resolution: YEAR + DAY_OF_YEAR
clear all
set era Showa
set year 64
set day_of_year 7
check date Showa 64 Jan 7
clear all
set era Showa
set year 64
set day_of_year 10
check date Heisei 1 Jan 10
clear all
set era Showa
set year 64
check date Showa 64 Jan 1
check day_of_year 1
clear all
set era Heisei
set year 1
set day_of_year 10
check date Heisei 1 Jan 17
clear all
set era Heisei
set year 1
set day_of_year 1
check date Heisei 1 Jan 8
clear all
set era Heisei
set year 1
set day_of_year -1
check date Showa 64 Jan 6
clear all
set date Heisei 17 Mar 16
set day_of_year 31
check date Heisei 17 Jan 31
clear all
set date Heisei 17 Mar 16
set week_of_year 50
set day_of_week Wed
set day_of_year 31
check date Heisei 17 Jan 31
clear all
set date Heisei 17 Mar 16
set week_of_month 5
set day_of_week Wed
set day_of_year 31
check date Heisei 17 Jan 31
test Field resolution: YEAR + DAY_OF_WEEK + WEEK_OF_YEAR
clear all
set era Showa
set year 64
set week_of_year 1
check day_of_week $fdow
check date 64 Jan 1
clear all
set era Showa
set year 64
set week_of_year 1
set day_of_week Wed
check date Showa 64 Jan 4
clear all
set era Heisei
set year 1
set week_of_year 1
check day_of_week $fdow
check date 1 Jan 8
clear all
set date Heisei 17 Mar 16
set week_of_year 2
set day_of_week Thu
check date Heisei 17 Jan 6
clear all
set week_of_year 2
set date Heisei 17 Mar 16
set day_of_week Thu
check date Heisei 17 Jan 6
clear all
set day_of_week Thu
set date Heisei 17 Mar 16
set week_of_year 2
check date Heisei 17 Jan 6
test zone offsets
# Tests here depend on the GMT offset.
timezone GMT+09:00
new instance cal0900
use cal0900
clear all
set date Heisei 17 Mar 12
get millis
assign $result $H17Mar12
clear all
set date Heisei 17 Mar 12
set zone_offset 0
get millis
eval $result - 32400000 # -9 hours
eval $result == $H17Mar12
clear all
set date Heisei 17 Mar 12
set zone_offset 28800000 # 8 hours
set dst_offset 3600000 # 1 hour
get millis
eval $result == $H17Mar12
clear all
set date Heisei 17 Mar 12
set zone_offset 18000000 # 5 hours
set dst_offset 14400000 # 4 hours
get millis
eval $result == $H17Mar12
test/java/util/Calendar/CalendarTestScripts/japanese/japanese_add.cts
0 → 100644
浏览文件 @
c601daa5
#
# %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
test/java/util/Calendar/CalendarTestScripts/japanese/japanese_exceptions.cts
0 → 100644
浏览文件 @
c601daa5
#
#
#
locale ja JP JP
# Use jcal in non-lenient mode for all test cases.
set non-lenient
new instance jcal
use jcal
clear all
test Invalid BeforeMeiji dates
set date BeforeMeiji 1868 Jan 1
get millis
exception IllegalArgumentException
set date BeforeMeiji 1868 Jan 32
get millis
exception IllegalArgumentException
set date BeforeMeiji 2005 Mar 9
get millis
exception IllegalArgumentException
test Invalid Meiji dates
set date Meiji -1 Jan 1
get millis
exception IllegalArgumentException
set date Meiji 1 Feb 30
get millis
exception IllegalArgumentException
set date Meiji 45 Jul 30
get millis
exception IllegalArgumentException
set date Meiji 46 Jan 1
get millis
exception IllegalArgumentException
test Invalid Taisho dates
set date Taisho -1 Jan 1
get millis
exception IllegalArgumentException
set date Taisho 1 Jan 1
get millis
exception IllegalArgumentException
set date Taisho 1 Apr 1
get millis
exception IllegalArgumentException
set date Taisho 15 Dec 30
get millis
exception IllegalArgumentException
set date Taisho 15 Feb 29
get millis
exception IllegalArgumentException
test Invalid Showa dates
set date Showa -11 Jan 1
get millis
exception IllegalArgumentException
set date Showa 1 Jan 1
get millis
exception IllegalArgumentException
set date Showa 1 Jun 1
get millis
exception IllegalArgumentException
set date Showa 1 Jul 29
get millis
exception IllegalArgumentException
set date Showa 64 Jan 8
get millis
exception IllegalArgumentException
set date Showa 64 Dec 8
get millis
exception IllegalArgumentException
set date Showa 65 Jan 1
get millis
exception IllegalArgumentException
test Invalid Heisei dates
clear all
set date Heisei -1 Jan 1
get millis
exception IllegalArgumentException
set date Heisei 1 Jan 1
get millis
exception IllegalArgumentException
set date Heisei 1 Jan 7
get millis
exception IllegalArgumentException
set date Heisei 1 Jan 8
get max year
eval $result + 1
set date Heisei $result Jan 1
get millis
exception IllegalArgumentException
test Invalid ERA
get max era
eval $result + 1
set era $result # max era + 1
get era
exception IllegalArgumentException
set era 100
get era
exception IllegalArgumentException
set era -100
get era
exception IllegalArgumentException
test Invalid HOUR_OF_DAY
clear all
set date Heisei 17 Mar 14
set hour_of_day 25
get millis
exception IllegalArgumentException
set hour_of_day -9
get millis
exception IllegalArgumentException
test Invalid AMPM
clear all
set date Heisei 17 Mar 14
set ampm -1
set hour 1
get millis
exception IllegalArgumentException
set ampm 5
set hour 1
get millis
exception IllegalArgumentException
test Invalid HOUR
clear all
set date Heisei 17 Mar 14
set ampm AM
set hour 13
get millis
exception IllegalArgumentException
set ampm PM
set hour -1
get millis
exception IllegalArgumentException
test Invalid MINUTE
clear all
set date Heisei 17 Mar 14
set minute 61
get millis
exception IllegalArgumentException
set minute -2
get millis
exception IllegalArgumentException
test Invalid SECOND
clear all
set date Heisei 17 Mar 14
set second 61
get millis
exception IllegalArgumentException
set second -2
get millis
exception IllegalArgumentException
test Invalid MILLISECOND
clear all
set date Heisei 17 Mar 14
set millisecond 1000
get millis
exception IllegalArgumentException
set millisecond -2
get millis
exception IllegalArgumentException
test Invalid ZONE_OFFSET
clear all
set date Heisei 17 Mar 14
set zone_offset -360000000
get millis
exception IllegalArgumentException
set zone_offset -360000000
get year
exception IllegalArgumentException
set zone_offset 360000000
get millis
exception IllegalArgumentException
set zone_offset 360000000
get year
exception IllegalArgumentException
test Invalid DST_OFFSET
clear all
set date Heisei 17 Mar 14
set dst_offset -360000000
get millis
exception IllegalArgumentException
set dst_offset -360000000
get year
exception IllegalArgumentException
set dst_offset 360000000
get millis
exception IllegalArgumentException
set dst_offset 360000000
get year
exception IllegalArgumentException
test/java/util/Calendar/CalendarTestScripts/japanese/japanese_minmax.cts
0 → 100644
浏览文件 @
c601daa5
#
#
#
locale ja JP JP
new instance jcal
new gregorian gcal
# Use GMT+09:00 for max day of year test which depends on time zone
# offsets.
timezone GMT+09:00
new instance tokyocal
test Make sure that the maximum year value doesn't depent on era
use jcal
# Note: the max year value is as of NewEra
assign 292276976 $max
clear all
set date NewEra 1 May 1
get millis
check max year $max
assign $max $maxyear
clear all
set date Heisei 20 May 5
get millis
check max year $maxyear
clear all
set date Showa 35 May 5
get millis
check max year $maxyear
clear all
set date BeforeMeiji 1 Jun 1
get millis
check max year $max
test Max of ERA
use jcal
# Assumption: NewEra is the current era
check maximum era NewEra
check leastmax era NewEra
test Actual max MONTH
use jcal
clear all
set date BeforeMeiji 1867 Jan 31
check actualmax month Dec
# Make sure that the same value is returned after
# normalization.
get millis
check actualmax month Dec
clear all
set date Meiji 45 Mar 31
check actualmax month Jul
get millis
check actualmax month Jul
clear all
set date Taisho 15 June 1
check actualmax month Dec
get millis
check actualmax month Dec
clear all
set date Showa 64 Jan 4
check actualmax month Jan
get millis
check actualmax month Jan
clear all
set date Heisei 31 Jan 4
check actualmax month Apr
get millis
check actualmax month Apr
clear all
set date NewEra 2 Jan 1
set year $maxyear
check actualmax month Aug
get millis
check actualmax month Aug
clear all
set date 17 Mar 1
check actualmax month Dec
get millis
check actualmax month Dec
test Actual max DAY_OF_YEAR
use jcal
clear all
set date Meiji 1 Dec 31
# Meiji Gan-nen is a leap year.
check actualmax day_of_year 366
check day_of_year 366
clear all
set date Meiji 45 Jan 1
# Meiji 45 or Taishi Gan-nen is also a leap year.
check actualmax day_of_year 211 # 31+29+31+30+31+30+29
set date Meiji 45 Jul 29
check day_of_year 211
set date Taisho 1 Jul 31
get millis
check actualmax day_of_year 155 # 366 - 211
set date Taisho 1 Dec 31
check day_of_year 155
clear all
set date Taisho 15 Sep 23
check actualmax day_of_year 358 # 365 - 7
set date Taisho 15 Dec 24
check day_of_year 358
set date Showa 1 Dec 25
check actualmax day_of_year 7
set date Showa 1 Dec 31
check day_of_year 7
clear all
set date Showa 64 Jan 3
check actualmax day_of_year 7
set date Showa 64 Jan 7
check day_of_year 7
set date Heisei 1 Aug 9
check actualmax day_of_year 358 # 365 - 7
set date Heisei 1 Dec 31
check day_of_year 358
# time zone dependent
use tokyocal
clear all
set date NewEra $maxyear Jan 1
# the last date of NewEra is N292276976.08.17T16:12:55.807+0900
check actualmax day_of_year 229 # 31+28+31+30+31+30+31+17
test Actual max WEEK_OF_YEAR
use jcal
clear all
set date Meiji 1 Jan 1
# Meiji gan-nen is a leap year.
check actualmax week_of_year 52
clear all
set date Meiji 45 Jan 1
check actualmax week_of_year 30
set date Taisho 1 July 31
check actualmax week_of_year 22
clear all
set date Taisho 15 Sep 23
check actualmax week_of_year 51
set date Showa 1 Dec 25
check actualmax week_of_year 1
clear all
set date Showa 64 Jan 3
check actualmax week_of_year 1
set date Heisei 1 Aug 9
check actualmax week_of_year 51
clear all
set date Heisei 31 Apr 28
check actualmax week_of_year 17
set date NewEra 1 Aug 9
check actualmax week_of_year 35
use tokyocal
set date NewEra $maxyear Jan 1
# the last date of NewEra is N292276976.08.17T16:12:55.807+0900 (Sunday)
# The year is equivalent to 2003 (Gregorian).
check actualmax week_of_year 34
test Actual max WEEK_OF_MONTH
use jcal
clear all
set date Meiji 45 Jul 1
check actualmax week_of_month 5
set date Taisho 1 Jul 31
check actualmax week_of_month 5
clear all
set date Taisho 15 Dec 1
check actualmax week_of_month 5
set date Showa 1 Dec 25
check actualmax week_of_month 5
clear all
set date Showa 64 Jan 1
check actualmax week_of_month 5
set date Heisei 1 Jan 8
check actualmax week_of_month 5
clear all
set date Heisei 31 Apr 30
check actualmax week_of_month 5
set date NewEra 1 May 1
check actualmax week_of_month 5
use tokyocal
set date NewEra $maxyear Jan 1
# the last date of NewEra is N292276976.08.17T16:12:55.807+0900 (Sunday)
# The year is equivalent to 2003 (Gregorian).
check actualmax week_of_month 4
test Actual max DAY_OF_WEEK_IN_MONTH
use jcal
clear all
set date Meiji 45 Jul 1
check actualmax week_of_month 5
set date Taisho 1 Jul 31
check actualmax week_of_month 5
clear all
set date Taisho 15 Dec 1
check actualmax week_of_month 5
set date Showa 1 Dec 25
check actualmax week_of_month 5
clear all
set date Showa 64 Jan 1
check actualmax week_of_month 5
set date Heisei 1 Jan 8
check actualmax week_of_month 5
clear all
set date Heisei 31 Apr 30
check actualmax week_of_month 5
set date NewEra 1 May 1
check actualmax week_of_month 5
use tokyocal
clear all
set date NewEra $maxyear Jan 1
# the last date of NewEra is N292276976.08.17T16:12:55.807+0900 (Sunday)
# The year is equivalent to 2003 (Gregorian).
check actualmax week_of_month 4
test Actual max YEAR
use jcal
clear all
set date BeforeMeiji 1 Jan 1
check actualmax year 1867
set date Meiji 1 Jan 1
check actualmax year 45
set date Meiji 1 Jul 30
check actualmax year 44
set date Taisho 1 Jul 30
check actualmax year 15
set date Taisho 1 Dec 25
check actualmax year 14
set date Showa 2 Jan 1
check actualmax year 64
set date Showa 1 Dec 25
check actualmax year 63
set date Heisei 1 Jan 7
check actualmax year 64
set date Heisei 1 Aug 18
check actualmax year 30
set date NewEra 1 Apr 30
check actualmax year 31
# Date/time beyond the last date in the max year.
set date NewEra 1 Aug 18
check actualmax year 292276975
test Least max YEAR
set date Heisei 17 Mar 1
# Taisho is the shortest era, 14 years.
# (See above actual max YEAR case.)
check leastmax year 14
test Acutual min YEAR
# Get minimum values for comparison
clear all
set era BeforeMeiji
get min year
assign $result $minyear
set date $minyear Dec 31
eval $minyear + 1
assign $result $minyear_plus_one
# BeforeMeiji 1 Dec 31 should exist in the minimum year which
# should be the same value as the getMinimum() value.
set date BeforeMeiji 1 Dec 31
check actualmin year $minyear
# Jan 1 shouldn't exist in the same year. So the actual minimum is
# $minyear + 1.
set date 1 Jan 1
check actualmin year $minyear_plus_one
# 1 should be returned if it's on a date of the last
# year which also exists in the first year of each era.
clear all
set date Meiji 45 Jan 1
check actualmin year 1
clear all
set date Taisho 14 Jul 30
check actualmin year 1
clear all
set date Showa 60 Dec 25
check actualmin year 1
clear all
set date Heisei 17 Jan 8
check actualmin year 1
# 2 should be returned if it's on a date of the last year which
# doesn't exist in the first year of each era. (Meiji is an
# exception.)
clear all
set date Taisho 14 Jul 29
check actualmin year 2
clear all
set date Showa 60 Dec 23
check actualmin year 2
clear all
set date Heisei 17 Jan 7
check actualmin year 2
test/java/util/Calendar/CalendarTestScripts/japanese/japanese_normalization.cts
0 → 100644
浏览文件 @
c601daa5
#
#
#
locale ja JP JP
tz Asia/Tokyo
new instance jcal
new gregorian gcal
test Normalize year 0 and -1 (Showa)
use jcal
clear all
set date Showa 1 Jan 1
check date Taisho 15 Jan 1
clear all
set date Showa 0 Jan 1
check era Taisho
check date 14 Jan 1
clear all
set date Showa -1 Jan 1
check era Taisho
check date 13 Jan 1
test Normalize year max and max+1 (Showa)
clear all
set date Showa 64 Aug 9
check date Heisei 1 Aug 9
clear all
set date Showa 65 Aug 9
check date Heisei 2 Aug 9
test Normalize year 0 and -1 (Heisei)
use jcal
clear all
set date Heisei 1 Jan 1
check date Showa 64 Jan 1
clear all
set date Heisei 0 Jan 1
check date Showa 63 Jan 1
clear all
set date Heisei -1 Jan 1
check date Showa 62 Jan 1
test Normalize year max and max+1 (Taisho)
clear all
set date Taisho 15 Dec 25
check date Showa 1 Dec 25
clear all
set date Taisho 16 Dec 25
check date Showa 2 Dec 25
test Normalize day of month 0 and -1 (Heisei)
use jcal
clear all
set date Heisei 1 Jan 1
check date Showa 64 Jan 1
clear all
set date Heisei 1 Jan 0
check date Showa 63 Dec 31
clear all
set date Heisei 1 Jan -1
check date Showa 63 Dec 30
test Normalize hour of day -1:00 (Heisei)
clear all
set era Heisei
set datetime 1 Jan 1 0 0 0
check era Showa
check datetime 64 Jan 1 0 0 0
clear all
set era Heisei
set datetime 1 Jan 1 -1 0 0
check era Showa
check datetime 63 Dec 31 23 0 0
test Normalize hour of day 25:00 (Taisho)
clear all
set era Taisho
set datetime 15 Dec 25 25 0 0
check era Showa
check datetime 1 Dec 26 1 0 0
test Normalize hour of day 25:00 (Showa)
clear all
set era Showa
set datetime 64 Jan 7 25 0 0
check era Heisei
check datetime 1 Jan 8 1 0 0
test/java/util/Calendar/CalendarTestScripts/japanese/japanese_roll.cts
0 → 100644
浏览文件 @
c601daa5
#
#
#
# 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 NewEra 2 Apr 30
get max year
assign $result $hmax
roll year -1
check date NewEra $hmax Apr 30
roll year 1
check date NewEra 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 NewEra 17 Jan 1
get max year
assign $result $max
set date NewEra $max Jul 28
roll month 1
check date NewEra $max Aug 17
set date NewEra $max Jul 28
set timeofday 23 59 59 999
roll month 1
check date NewEra $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
test/java/util/Calendar/CalendarTestScripts/params/lenient.cts
0 → 100644
浏览文件 @
c601daa5
#
#
#
set lenient
test/java/util/Calendar/CalendarTestScripts/params/non-lenient.cts
0 → 100644
浏览文件 @
c601daa5
#
#
#
set non-lenient
test/java/util/Calendar/CalendarTestScripts/timezones/tz_japan.cts
0 → 100644
浏览文件 @
c601daa5
#
#
#
timezone Asia/Tokyo
test/java/util/Calendar/CalendarTestScripts/timezones/tz_novosibirsk.cts
0 → 100644
浏览文件 @
c601daa5
#
#
#
timezone Asia/Novosibirsk
test/java/util/Calendar/CalendarTestScripts/timezones/tz_pst.cts
0 → 100644
浏览文件 @
c601daa5
#
#
#
timezone America/Los_Angeles
test/java/util/Calendar/CalendarTestScripts/timezones/tz_sydney.cts
0 → 100644
浏览文件 @
c601daa5
#
#
#
timezone Australia/Sydney
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录