1#!/usr/bin/perl -w 2use lib 'inc'; 3use strict; 4use blib; 5 6use Test::More tests => 4; 7BEGIN { use_ok 'DateTime::Format::Builder' } 8 9SKIP: { 10 my @three = map { "DateTime::Format::$_" } qw( HTTP Mail IBeat ); 11 my @fails; 12 for my $mod (@three) 13 { 14 eval "require $mod"; 15 push @fails, $mod if $@; 16 } 17 skip "@fails not installed.", 3 if @fails; 18 19 eval qq|package DateTime::Format::Fall;| 20 .join("", map { "use $_;\n" } @three ) 21 .q| 22 use DateTime::Format::Builder ( 23 parsers => { parse_datetime => [ 24 |.join("", map { 25 qq|sub { eval { $_->parse_datetime( \$_[1] ) } },\n| 26 } @three ) 27 .q| 28 ]}); 29 30 1; 31 |; 32 33 die $@ if $@; 34 35 my $get = sub { eval { 36 DateTime::Format::Fall 37 ->parse_datetime($_[0]) 38 ->set_time_zone( 'UTC' ) 39 ->datetime 40 } }; 41 42 43 for ( '@d19.07.03 @704', '20030719T155345Z' ) 44 { 45 my $dt = $get->( $_ ); 46 is $dt, "2003-07-19T15:53:45", "Can parse [$_]"; 47 } 48 49 for ( 'gibberish' ) 50 { 51 my $dt = $get->( $_ ); 52 ok( !defined $dt, "Shouldn't parse [$_]" ) 53 } 54} 55