use warnings;
use strict;
use Test::More tests => 8*39 + 10;
BEGIN { use_ok "Time::UTC", qw(utc_start_segment); }
{
no warnings "redefine";
sub Time::UTC::Segment::_download_latest_data() { 0 }
}
use Math::BigRat 0.04;
sub match($$) {
my($a, $b) = @_;
ok ref($a) eq ref($b) && $a == $b;
}
my $seg = utc_start_segment();
for(my $n = 39; $n--; $seg = $seg->next) {
match $seg->length_in_tai_seconds,
$seg->end_tai_instant - $seg->start_tai_instant;
match $seg->last_utc_day + 1, $seg->end_utc_day;
match $seg->last_day_utc_seconds, 86400 + $seg->leap_utc_seconds;
match $seg->length_in_utc_seconds,
86400 * ($seg->last_utc_day - $seg->start_utc_day) +
$seg->last_day_utc_seconds;
match $seg->length_in_tai_seconds,
$seg->length_in_utc_seconds * $seg->utc_second_length;
match $seg->next->prev, $seg;
match $seg->end_tai_instant, $seg->next->start_tai_instant;
match $seg->end_utc_day, $seg->next->start_utc_day;
}
ok $seg->utc_second_length == 1;
foreach my $method (qw(length_in_tai_seconds end_tai_instant last_utc_day
end_utc_day leap_utc_seconds last_day_utc_seconds
length_in_utc_seconds next)) {
eval { $seg->$method; };
like $@, qr/\Adata not available yet /;
}
1;