use strict;
use Test::More tests => 57;
use DateTime;
{
my $t = DateTime->new( year => 1972, month => 7, day => 1,
hour => 0, minute => 59, second => 58,
time_zone => '+0100',
);
is( $t->second, 58, 'second value for leap second T-2, +0100' );
is( $t->{utc_rd_days}, 720074,
'UTC RD days for leap second T-2' );
is( $t->{utc_rd_secs}, 86398,
'UTC RD seconds for leap second T-2' );
is( $t->{local_rd_days}, 720075,
'local RD days for leap second T-2' );
is( $t->{local_rd_secs}, 3598,
'local RD seconds for leap second T-2' );
}
{
my $t = DateTime->new( year => 1972, month => 7, day => 1,
hour => 0, minute => 59, second => 59,
time_zone => '+0100',
);
is( $t->second, 59, 'second value for leap second T-1, +0100' );
is( $t->{utc_rd_days}, 720074,
'UTC RD days for leap second T-1' );
is( $t->{utc_rd_secs}, 86399,
'UTC RD seconds for leap second T-1' );
is( $t->{local_rd_days}, 720075,
'local RD days for leap second T-1' );
is( $t->{local_rd_secs}, 3599,
'local RD seconds for leap second T-1' );
}
{
my $t = eval { DateTime->new( year => 1972, month => 7, day => 1,
hour => 0, minute => 59, second => 60,
time_zone => '+0100',
) };
ok( ! $@, 'constructor for second = 60' );
SKIP:
{
skip 'constructor failed - no object to test', 5
unless $t;
is( $t->second, 60, 'second value for leap second T-0, +0100' );
is( $t->{utc_rd_days}, 720074,
'UTC RD days for leap second T-0' );
is( $t->{utc_rd_secs}, 86400,
'UTC RD seconds for leap second T-0' );
is( $t->{local_rd_days}, 720075,
'local RD days for leap second T-0' );
is( $t->{local_rd_secs}, 3600,
'local RD seconds for leap second T-0' );
}
}
{
my $t = DateTime->new( year => 1972, month => 7, day => 1,
hour => 1, minute => 0, second => 0,
time_zone => '+0100',
);
is( $t->second, 0, 'second value for leap second T+1, +0100' );
is( $t->{utc_rd_days}, 720075,
'UTC RD days for leap second T+1' );
is( $t->{utc_rd_secs}, 0,
'UTC RD seconds for leap second T+1' );
is( $t->{local_rd_days}, 720075,
'local RD days for leap second T+1' );
is( $t->{local_rd_secs}, 3601,
'local RD seconds for leap second T+1' );
}
{
my $t = DateTime->new( year => 1972, month => 7, day => 1,
hour => 1, minute => 0, second => 1,
time_zone => '+0100',
);
is( $t->second, 1, 'second value for leap second T+2, +0100' );
is( $t->{utc_rd_days}, 720075,
'UTC RD days for leap second T+2' );
is( $t->{utc_rd_secs}, 1,
'UTC RD seconds for leap second T+2' );
is( $t->{local_rd_days}, 720075,
'local RD days for leap second T+2' );
is( $t->{local_rd_secs}, 3602,
'local RD seconds for leap second T+2' );
}
{
my $t = DateTime->new( year => 1972, month => 7, day => 1,
hour => 23, minute => 59, second => 59,
time_zone => '+0100',
);
is( $t->second, 59, 'second value for end of leap second day, +0100' );
is( $t->{utc_rd_days}, 720075,
'UTC RD days for end of leap second day' );
is( $t->{utc_rd_secs}, 82799,
'UTC RD seconds for end of leap second day' );
is( $t->{local_rd_days}, 720075,
'local RD days for leap second day' );
is( $t->{local_rd_secs}, 86400,
'local RD seconds for end of leap second day' );
}
{
my $t = DateTime->new( year => 1972, month => 6, day => 30,
hour => 22, minute => 59, second => 58,
time_zone => '-0100',
);
is( $t->second, 58, 'second value for leap second T-2, -0100' );
is( $t->{utc_rd_days}, 720074,
'UTC RD days for leap second T-2' );
is( $t->{utc_rd_secs}, 86398,
'UTC RD seconds for leap second T-2' );
is( $t->{local_rd_days}, 720074,
'local RD days for leap second T-2' );
is( $t->{local_rd_secs}, 82798,
'local RD seconds for leap second T-2' );
}
{
my $t = DateTime->new( year => 1972, month => 6, day => 30,
hour => 22, minute => 59, second => 59,
time_zone => '-0100',
);
is( $t->second, 59, 'second value for leap second T-1, -0100' );
is( $t->{utc_rd_days}, 720074,
'UTC RD days for leap second T-1' );
is( $t->{utc_rd_secs}, 86399,
'UTC RD seconds for leap second T-1' );
is( $t->{local_rd_days}, 720074,
'local RD days for leap second T-1' );
is( $t->{local_rd_secs}, 82799,
'local RD seconds for leap second T-1' );
}
{
my $t = eval { DateTime->new( year => 1972, month => 6, day => 30,
hour => 22, minute => 59, second => 60,
time_zone => '-0100',
) };
ok( ! $@, 'constructor for second = 60' );
SKIP:
{
skip 'constructor failed - no object to test', 5
unless $t;
is( $t->second, 60, 'second value for leap second T-0, -0100' );
is( $t->{utc_rd_days}, 720074,
'UTC RD days for leap second T-0' );
is( $t->{utc_rd_secs}, 86400,
'UTC RD seconds for leap second T-0' );
is( $t->{local_rd_days}, 720074,
'local RD days for leap second T-0' );
is( $t->{local_rd_secs}, 82800,
'local RD seconds for leap second T-0' );
}
}
{
my $t = DateTime->new( year => 1972, month => 6, day => 30,
hour => 23, minute => 0, second => 0,
time_zone => '-0100',
);
is( $t->second, 0, 'second value for leap second T+1, -0100' );
is( $t->{utc_rd_days}, 720075,
'UTC RD days for leap second T+1' );
is( $t->{utc_rd_secs}, 0,
'UTC RD seconds for leap second T+1' );
is( $t->{local_rd_days}, 720074,
'local RD days for leap second T+1' );
is( $t->{local_rd_secs}, 82801,
'local RD seconds for leap second T+1' );
}
{
my $t = DateTime->new( year => 1972, month => 6, day => 30,
hour => 23, minute => 0, second => 1,
time_zone => '-0100',
);
is( $t->second, 1, 'second value for leap second T+2, -0100' );
is( $t->{utc_rd_days}, 720075,
'UTC RD days for leap second T+2' );
is( $t->{utc_rd_secs}, 1,
'UTC RD seconds for leap second T+2' );
is( $t->{local_rd_days}, 720074,
'local RD days for leap second T+2' );
is( $t->{local_rd_secs}, 82802,
'local RD seconds for leap second T+2' );
}