use strict;
use warnings;
#use Data::Dumper; $Data::Dumper::Indent = 1;
use Test::More;
plan skip_all => 'set ATOMPUB_TEST_LIVE to enable this test'
unless $ENV{ATOMPUB_TEST_LIVE};
plan tests => 11;
# current time is "Mon Jan 01 10:00:00 2007" in your timezone
BEGIN {
use HTTP::Date qw(str2time);
*CORE::GLOBAL::time = sub { str2time '2007-01-01 10:00:00' };
}
use Atompub::DateTime qw(datetime);
use DateTime;
use Time::Local;
sub diff {
my $dt = DateTime->from_epoch(epoch => time); # in UTC
my $tz = Atompub::DateTime::tz(); # in local time
$tz->offset_for_datetime($dt); # diff in sec.
}
sub tz {
my $diff = diff();
my $tz = sprintf "%+03d:%02d", int( $diff / 3600 ), int( ( $diff % 3600 ) / 60 );
$tz eq '+00:00' ? 'Z' : $tz;
}
my $dt = datetime;
is $dt->epoch, 1167645600 - diff();
is $dt->iso, '2007-01-01 10:00:00';
is $dt->w3c, '2007-01-01T10:00:00' . tz();
like $dt->isoz, qr{^20\d\d-\d\d-\d\d \d\d:\d\d:\d\dZ$};
like $dt->w3cz, qr{^20\d\d-\d\d-\d\dT\d\d:\d\d:\d\dZ$};
like $dt->str, qr{^[a-z]{3},\s+\d{1,2}\s+[a-z]{3}\s+20\d\d\s+\d\d:\d\d:\d\d\s+GMT$}i;
is "$dt", $dt->w3c;
is 0+$dt, $dt->epoch;
my $dt2 = datetime($dt);
ok $dt = $dt2;
$dt2 = datetime($dt->epoch + 1);
ok $dt < $dt2;
ok $dt != $dt2;