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