Blob Blame History Raw
use strict;
use warnings;

use Test::More;

use DateTime::Format::Builder;

{
    eval q|
        package DTFB::Sub;
        use base qw( DateTime::Format::Builder );

        sub on_fail {
            return undef;
        }

        1;

        package DTFB::OnFailSubTest;

        BEGIN {
            DTFB::Sub->import(
                parsers => {
                    parse_datetime => [
                    {strptime=> '%m/%d/%Y'},
                    {strptime=> '%Y/%m/%d'},
                    ]
                }
            );
        }

        1;
    |;
    ok( !$@, "Made class" );
    diag $@ if $@;

    my $o          = DTFB::OnFailSubTest->new;
    my $good_parse = $o->parse_datetime("2003/08/09");
    isa_ok( $good_parse, 'DateTime' );
    is( $good_parse->year  => 2003, "Year good" );
    is( $good_parse->month => 8,    "Month good" );
    is( $good_parse->day   => 9,    "Day good" );

    my $bad_parse = eval { $o->parse_datetime("Fnerk") };
    ok( !$@, "Bad parse gives no error" );
    diag $@ if $@;
    ok( ( !defined($bad_parse) ), "Bad parse correctly gives undef" );
}

done_testing();