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