|
Packit |
9002b2 |
use strict;
|
|
Packit |
9002b2 |
use warnings;
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
use Test::More;
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
use DateTime::Format::Builder;
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
# ------------------------------------------------------------------------
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
sub do_check {
|
|
Packit |
9002b2 |
my ( $parser, $date, $values ) = @_;
|
|
Packit |
9002b2 |
my $parsed = $parser->parse( 'DateTime::Format::Builder', $date );
|
|
Packit |
9002b2 |
isa_ok( $parsed => 'DateTime' );
|
|
Packit |
9002b2 |
is( $parsed->year() => $values->[0], "Year is right" );
|
|
Packit |
9002b2 |
is( $parsed->month() => $values->[1], "Month is right" );
|
|
Packit |
9002b2 |
is( $parsed->day() => $values->[2], "Day is right" );
|
|
Packit |
9002b2 |
}
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
{
|
|
Packit |
9002b2 |
my $parser = DateTime::Format::Builder->create_parser(
|
|
Packit |
9002b2 |
{
|
|
Packit |
9002b2 |
#YYYY-DDD 1985-102
|
|
Packit |
9002b2 |
regex => qr/^ (\d{4}) -?? (\d{3}) $/x,
|
|
Packit |
9002b2 |
params => [qw( year day_of_year )],
|
|
Packit |
9002b2 |
constructor => [ 'DateTime', 'from_day_of_year' ],
|
|
Packit |
9002b2 |
},
|
|
Packit |
9002b2 |
{
|
|
Packit |
9002b2 |
regex => qr/^ (\d{4}) foo (\d{3}) $/x,
|
|
Packit |
9002b2 |
params => [qw( year day_of_year )],
|
|
Packit |
9002b2 |
constructor => sub {
|
|
Packit |
9002b2 |
my $self = shift;
|
|
Packit |
9002b2 |
DateTime->from_day_of_year(@_);
|
|
Packit |
9002b2 |
},
|
|
Packit |
9002b2 |
}
|
|
Packit |
9002b2 |
);
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
my %dates = (
|
|
Packit |
9002b2 |
'1985-102' => [ 1985, 4, 12 ],
|
|
Packit |
9002b2 |
'2004-102' => [ 2004, 4, 11 ], # leap year
|
|
Packit |
9002b2 |
);
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
for my $date ( sort keys %dates ) {
|
|
Packit |
9002b2 |
my $values = $dates{$date};
|
|
Packit |
9002b2 |
do_check( $parser, $date, $values );
|
|
Packit |
9002b2 |
$date =~ s/-/foo/;
|
|
Packit |
9002b2 |
do_check( $parser, $date, $values );
|
|
Packit |
9002b2 |
}
|
|
Packit |
9002b2 |
}
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
{
|
|
Packit |
9002b2 |
my $parser = DateTime::Format::Builder->create_parser(
|
|
Packit |
9002b2 |
{
|
|
Packit |
9002b2 |
regex => qr/^ (\d+) $/x,
|
|
Packit |
9002b2 |
params => [qw( epoch )],
|
|
Packit |
9002b2 |
constructor => [ 'DateTime', 'from_epoch' ]
|
|
Packit |
9002b2 |
}
|
|
Packit |
9002b2 |
);
|
|
Packit |
9002b2 |
my %epochs = (
|
|
Packit |
9002b2 |
1057279398 => '2003-07-04T00:43:18',
|
|
Packit |
9002b2 |
);
|
|
Packit |
9002b2 |
for my $epoch ( sort keys %epochs ) {
|
|
Packit |
9002b2 |
my $check = $epochs{$epoch};
|
|
Packit |
9002b2 |
my $dt = $parser->parse( 'DateTime::Format::Builder', $epoch );
|
|
Packit |
9002b2 |
isa_ok( $dt => 'DateTime' );
|
|
Packit |
9002b2 |
is( $dt->datetime => $check, "Epoch of $epoch to $check" );
|
|
Packit |
9002b2 |
}
|
|
Packit |
9002b2 |
}
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
pass 'All done';
|
|
Packit |
9002b2 |
|
|
Packit |
9002b2 |
done_testing();
|