#!perl
use strict;
use Test::More (tests => 55);
BEGIN
{
use_ok("DateTime::Format::Japanese::Traditional", ':constants');
}
use Encode;
my @params = (
[
DateTime::Calendar::Japanese->new(
era_name => DateTime::Calendar::Japanese::Era::HEISEI(),
era_year => 15,
month => 6,
day => 14,
hour => 3,
hour_quarter => 2
),
{
"平成一五年六月一四日巳二つ刻" =>
[ FORMAT_KANJI, FORMAT_NUMERIC_MONTH, 0 ],
"平成十五年六月十四日巳二つ刻" =>
[ FORMAT_KANJI_WITH_UNIT, FORMAT_NUMERIC_MONTH, 0 ],
"平成15年6月14日巳2つ刻" =>
[ FORMAT_ZENKAKU, FORMAT_NUMERIC_MONTH, 0 ],
"平成15年6月14日巳2つ刻" =>
[ FORMAT_ROMAN, FORMAT_NUMERIC_MONTH, 0 ],
"平成一五年水無月一四日巳二つ刻" =>
[ FORMAT_KANJI, FORMAT_WAREKI_MONTH, 0 ],
"旧暦平成一五年水無月一四日巳二つ刻" =>
[ FORMAT_KANJI, FORMAT_WAREKI_MONTH, 1 ],
# "平成一六年一月二九日一一時四九分三四秒" =>
# [ FORMAT_KANJI, FORMAT_ERA, 0, 0, 0 ],
# "平成十六年一月二十九日十一時四十九分三十四秒" =>
# [ FORMAT_KANJI_WITH_UNIT, FORMAT_ERA, 0, 0, 0 ],
# "平成16年1月29日11時49分34秒" =>
# [ FORMAT_ZENKAKU, FORMAT_ERA, 0, 0, 0 ],
# "平成16年1月29日11時49分34秒" =>
# [ FORMAT_ROMAN, FORMAT_ERA, 0, 0, 0 ],
# "平成16年1月29日11時49分34秒木曜日" =>
# [ FORMAT_ZENKAKU, FORMAT_ERA, 0, 0, 0, 1 ],
# "平成16年1月29日11時49分34秒" =>
# [ FORMAT_ROMAN, FORMAT_ERA, 0, 0, 0 ],
# "2004年1月29日11時49分34秒" =>
# [ FORMAT_ROMAN, FORMAT_GREGORIAN, 0, 0, 0 ],
# "西暦2004年1月29日11時49分34秒" =>
# [ FORMAT_ROMAN, FORMAT_GREGORIAN, 1, 0, 0 ],
# "西暦2004年1月29日午前11時49分34秒" =>
# [ FORMAT_ROMAN, FORMAT_GREGORIAN, 1, 0, 1 ],
# "西暦二〇〇四年一月二九日一一時四九分三四秒" =>
# [ FORMAT_KANJI, FORMAT_GREGORIAN, 1, 0, 0 ],
# "二〇〇四年一月二十九日十一時四十九分三十四秒" =>
# [ FORMAT_KANJI_WITH_UNIT, FORMAT_GREGORIAN, 0, 0, 0 ],
}
],
# [
# DateTime->new(year => -2004, month => 1, day => 29, hour => 11, minute => 49, second => 34),
# {
# "-二〇〇四年一月二九日一一時四九分三四秒" =>
# [ FORMAT_KANJI, FORMAT_GREGORIAN, 0, 0, 0 ],
# "西暦-二〇〇四年一月二九日一一時四九分三四秒" =>
# [ FORMAT_KANJI, FORMAT_GREGORIAN, 1, 0, 0 ],
# "紀元前西暦二〇〇四年一月二九日一一時四九分三四秒" =>
# [ FORMAT_KANJI, FORMAT_GREGORIAN, 1, 1, 0 ],
# }
# ]
);
my($dt, $str, $fmt);
foreach my $param (@params) {
$fmt = DateTime::Format::Japanese::Traditional->new();
while (my($expected, $args) = each %{$param->[1]}) {
$fmt->number_format($args->[0]);
$fmt->month_format($args->[1]);
$fmt->with_traditional_marker($args->[2]);
$str = $fmt->format_datetime($param->[0]);
is($str, $expected, "Test $expected");
$dt = $fmt->parse_datetime($str);
is($param->[0]->cycle, $dt->cycle);
is($param->[0]->cycle_year, $dt->cycle_year);
is($param->[0]->era->id, $dt->era->id);
is($param->[0]->era_year, $dt->era_year);
is($param->[0]->month, $dt->month);
is($param->[0]->day, $dt->day);
is($param->[0]->hour, $dt->hour);
is($param->[0]->hour_quarter, $dt->hour_quarter);
}
}