# $Id: altcon.t,v 1.3 2003/08/10 13:38:29 koschei Exp $
use strict;
use lib 'inc';
use blib;
use Test::More tests => 20;
use vars qw( $class );
BEGIN {
$class = 'DateTime::Format::Builder';
use_ok $class;
}
# ------------------------------------------------------------------------
sub do_check
{
my ($parser, $date, $values) = @_;
my $parsed = $parser->parse( $class, $date );
isa_ok( $parsed => 'DateTime' );
is( $parsed->year() => $values->[0], "Year is right" );
is( $parsed->month() => $values->[1], "Month is right" );
is( $parsed->day() => $values->[2], "Day is right" );
}
{
my $parser = $class->create_parser(
{
#YYYY-DDD 1985-102
regex => qr/^ (\d{4}) -?? (\d{3}) $/x,
params => [ qw( year day_of_year ) ],
constructor => [ 'DateTime', 'from_day_of_year' ],
},
{
regex => qr/^ (\d{4}) foo (\d{3}) $/x,
params => [ qw( year day_of_year ) ],
constructor => sub {
my $self = shift;
DateTime->from_day_of_year(@_);
},
}
);
my %dates = (
'1985-102' => [ 1985, 4, 12 ],
'2004-102' => [ 2004, 4, 11 ], # leap year
);
for my $date (sort keys %dates)
{
my $values = $dates{$date};
do_check( $parser, $date, $values );
$date =~ s/-/foo/;
do_check( $parser, $date, $values );
}
}
{
my $parser = $class->create_parser(
{
regex => qr/^ (\d+) $/x,
params => [qw( epoch ) ],
constructor => [ 'DateTime', 'from_epoch' ]
}
);
my %epochs = (
1057279398 => '2003-07-04T00:43:18',
);
for my $epoch (sort keys %epochs)
{
my $check = $epochs{$epoch};
my $dt = $parser->parse( $class, $epoch );
isa_ok( $dt => 'DateTime' );
is( $dt->datetime => $check, "Epoch of $epoch to $check" );
}
}
pass 'All done';