class TestCase::Time::Local {
use Sys;
use Sys::Time::Tm;
use Time::Local;
static method timelocal : int () {
{
my $epoch = Sys::Time->time();
my $tm = Sys->localtime($epoch);
my $epoch_ret = Time::Local->timelocal($tm);
unless ($epoch_ret isa long) {
return 0;
}
unless ($epoch == $epoch_ret) {
return 0;
}
}
return 1;
}
static method timegm : int () {
{
my $epoch = Sys::Time->time();
my $tm = Sys->gmtime($epoch);
my $epoch_ret = Time::Local->timegm($tm);
unless ($epoch_ret isa long) {
return 0;
}
unless ($epoch == $epoch_ret) {
return 0;
}
}
{
my $epoch = Sys::Time->time();
my $tm = Sys->gmtime($epoch);
my $new_tm = Sys->localtime(0);
$new_tm->set_tm_sec($tm->tm_sec);
$new_tm->set_tm_min($tm->tm_min);
$new_tm->set_tm_hour($tm->tm_hour);
$new_tm->set_tm_mday($tm->tm_mday);
$new_tm->set_tm_mon($tm->tm_mon);
$new_tm->set_tm_year($tm->tm_year);
my $epoch_again = Time::Local->timelocal($new_tm);
warn "[Test Output]timegm:to local:$epoch $epoch_again";
my $epoch_diff = $epoch - $epoch_again;
warn $epoch_diff;
=pod TODO This test depends on TZ environment variable
my $epoch_diff_hour = $epoch_diff / 60 / 60;
unless ($epoch_diff_hour == 9) {
return 0;
}
=cut
}
return 1;
}
}