|
Packit |
106d3f |
#!/usr/bin/perl
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
# Copyright (C) 2005 Joshua Hoblitt
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
use strict;
|
|
Packit |
106d3f |
use warnings;
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
use lib qw( ./lib );
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
use Test::More tests => 36;
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
use DateTime::Format::ISO8601;
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
{
|
|
Packit |
106d3f |
is( DateTime::Format::ISO8601->DefaultLegacyYear, 1 );
|
|
Packit |
106d3f |
my $iso_parser = DateTime::Format::ISO8601->new;
|
|
Packit |
106d3f |
is( $iso_parser->legacy_year, 1 );
|
|
Packit |
106d3f |
}
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
foreach my $n ( 0, 1, undef ) {
|
|
Packit |
106d3f |
DateTime::Format::ISO8601->DefaultLegacyYear( $n );
|
|
Packit |
106d3f |
is( DateTime::Format::ISO8601->DefaultLegacyYear, $n );
|
|
Packit |
106d3f |
my $iso_parser = DateTime::Format::ISO8601->new;
|
|
Packit |
106d3f |
is( $iso_parser->legacy_year, $n );
|
|
Packit |
106d3f |
}
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
foreach my $n ( -3 .. -1, 2 .. 4 ) {
|
|
Packit |
106d3f |
eval { DateTime::Format::ISO8601->DefaultLegacyYear( $n ) };
|
|
Packit |
106d3f |
like( $@, qr/did not pass the 'is 0, 1, or undef' callback/ );
|
|
Packit |
106d3f |
}
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
# restore default legacy year behavior
|
|
Packit |
106d3f |
DateTime::Format::ISO8601->DefaultLegacyYear( 1 );
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
foreach my $n ( 0, 1, undef ) {
|
|
Packit |
106d3f |
my $iso_parser = DateTime::Format::ISO8601->new( legacy_year => $n );
|
|
Packit |
106d3f |
isa_ok( $iso_parser, 'DateTime::Format::ISO8601' );
|
|
Packit |
106d3f |
is( $iso_parser->legacy_year, $n );
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
{
|
|
Packit |
106d3f |
my $iso_parser = DateTime::Format::ISO8601->new->set_legacy_year( $n );
|
|
Packit |
106d3f |
is( $iso_parser->legacy_year, $n );
|
|
Packit |
106d3f |
}
|
|
Packit |
106d3f |
}
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
foreach my $n ( -3 .. -1, 2 .. 4 ) {
|
|
Packit |
106d3f |
eval { DateTime::Format::ISO8601->new( legacy_year => $n ) };
|
|
Packit |
106d3f |
like( $@, qr/did not pass the 'is 0, 1, or undef' callback/ );
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
eval { DateTime::Format::ISO8601->new->set_legacy_year( $n ) };
|
|
Packit |
106d3f |
like( $@, qr/did not pass the 'is 0, 1, or undef' callback/ );
|
|
Packit |
106d3f |
}
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
{
|
|
Packit |
106d3f |
my $failed = 0;
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
foreach my $year ( 0 .. 99 ) {
|
|
Packit |
106d3f |
$year *= 100; # [0, 9900], step 100
|
|
Packit |
106d3f |
my $iso_parser = DateTime::Format::ISO8601->new(
|
|
Packit |
106d3f |
legacy_year => 0,
|
|
Packit |
106d3f |
base_datetime => DateTime->new( year => $year ),
|
|
Packit |
106d3f |
);
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
foreach my $tdy ( 0 .. 9 ) {
|
|
Packit |
106d3f |
$tdy *= 10; # [0, 90], step 10
|
|
Packit |
106d3f |
$tdy = sprintf( "%02d", $tdy );
|
|
Packit |
106d3f |
my $dt = $iso_parser->parse_datetime( "-$tdy" );
|
|
Packit |
106d3f |
$failed++ unless $dt->year eq sprintf(
|
|
Packit |
106d3f |
"%d", $iso_parser->base_datetime->strftime( "%C" ) . $tdy );
|
|
Packit |
106d3f |
}
|
|
Packit |
106d3f |
}
|
|
Packit |
106d3f |
|
|
Packit |
106d3f |
is( $failed, 0, "parse_datetime() with a base_datetime" );
|
|
Packit |
106d3f |
}
|