Blame t/dispatch.t

Packit 9002b2
use strict;
Packit 9002b2
use warnings;
Packit 9002b2
Packit 9002b2
use Test::More;
Packit 9002b2
Packit 9002b2
use DateTime::Format::Builder;
Packit 9002b2
Packit 9002b2
{
Packit 9002b2
    eval q[
Packit 9002b2
    package SampleDispatch;
Packit 9002b2
    use DateTime::Format::Builder
Packit 9002b2
    (
Packit 9002b2
        parsers => {
Packit 9002b2
        parse_datetime => [
Packit 9002b2
            {
Packit 9002b2
            Dispatch => sub {
Packit 9002b2
                return 'fnerk';
Packit 9002b2
            }
Packit 9002b2
            }
Packit 9002b2
        ]
Packit 9002b2
        },
Packit 9002b2
        groups => {
Packit 9002b2
        fnerk => [
Packit 9002b2
            {
Packit 9002b2
            regex => qr/^(\d{4})(\d\d)(\d\d)$/,
Packit 9002b2
            params => [qw( year month day )],
Packit 9002b2
            },
Packit 9002b2
        ]
Packit 9002b2
        }
Packit 9002b2
    );
Packit 9002b2
    ];
Packit 9002b2
    ok( !$@, "No errors when creating the class." );
Packit 9002b2
    if ($@) { diag $@; exit }
Packit 9002b2
Packit 9002b2
    my $parser = SampleDispatch->new();
Packit 9002b2
    isa_ok( $parser => 'SampleDispatch' );
Packit 9002b2
Packit 9002b2
    my $dt = eval { $parser->parse_datetime("20040506") };
Packit 9002b2
    ok( !$@, "No errors when parsing." );
Packit 9002b2
    if ($@) { diag $@; exit }
Packit 9002b2
    isa_ok( $dt => 'DateTime' );
Packit 9002b2
Packit 9002b2
    is( $dt->year  => 2004, 'Year is 2004' );
Packit 9002b2
    is( $dt->month => 5,    'Month is 5' );
Packit 9002b2
    is( $dt->day   => 6,    'Day is 6' );
Packit 9002b2
Packit 9002b2
    eval { $parser->fnerk };
Packit 9002b2
    ok( $@, "There is no fnerk." );
Packit 9002b2
Packit 9002b2
}
Packit 9002b2
Packit 9002b2
{
Packit 9002b2
    eval q[
Packit 9002b2
        package SampleDispatchB;
Packit 9002b2
Packit 9002b2
        use DateTime::Format::Builder;
Packit 9002b2
Packit 9002b2
        DateTime::Format::Builder->create_class(
Packit 9002b2
            parsers => {
Packit 9002b2
                parse_datetime => [
Packit 9002b2
                    {
Packit 9002b2
                        Dispatch => sub {
Packit 9002b2
                            return( 8, 6 );
Packit 9002b2
                        }
Packit 9002b2
                    },
Packit 9002b2
                ],
Packit 9002b2
            },
Packit 9002b2
            groups => {
Packit 9002b2
                8 => [
Packit 9002b2
                    {
Packit 9002b2
                        regex  => qr/^ (\d{4}) (\d\d) (\d\d) $/x,
Packit 9002b2
                        params => [ qw( year month day ) ],
Packit 9002b2
                    },
Packit 9002b2
                ],
Packit 9002b2
                6 => [
Packit 9002b2
                    {
Packit 9002b2
                        regex  => qr/^ (\d{4}) (\d\d) $/x,
Packit 9002b2
                        params => [ qw( year month ) ],
Packit 9002b2
                    },
Packit 9002b2
                ],
Packit 9002b2
            }
Packit 9002b2
        );
Packit 9002b2
    ];
Packit 9002b2
Packit 9002b2
    ok( !$@, "No errors when creating the class." );
Packit 9002b2
    if ($@) { diag $@; exit }
Packit 9002b2
Packit 9002b2
    my $parser = SampleDispatchB->new();
Packit 9002b2
    isa_ok( $parser => 'SampleDispatchB' );
Packit 9002b2
Packit 9002b2
    {
Packit 9002b2
        my $dt = eval { $parser->parse_datetime("20040506") };
Packit 9002b2
        ok( !$@, "No errors when parsing." );
Packit 9002b2
        if ($@) { diag $@; exit }
Packit 9002b2
        isa_ok( $dt => 'DateTime' );
Packit 9002b2
Packit 9002b2
        is( $dt->year  => 2004, 'Year is 2004' );
Packit 9002b2
        is( $dt->month => 5,    'Month is 5' );
Packit 9002b2
        is( $dt->day   => 6,    'Day is 6' );
Packit 9002b2
    }
Packit 9002b2
Packit 9002b2
    {
Packit 9002b2
        my $dt = eval { $parser->parse_datetime("200311") };
Packit 9002b2
        ok( !$@, "No errors when parsing." );
Packit 9002b2
        if ($@) { diag $@; exit }
Packit 9002b2
        isa_ok( $dt => 'DateTime' );
Packit 9002b2
Packit 9002b2
        is( $dt->year  => 2003, 'Year is 2003' );
Packit 9002b2
        is( $dt->month => 11,   'Month is 11' );
Packit 9002b2
        is( $dt->day   => 1,    'Day is 1' );
Packit 9002b2
    }
Packit 9002b2
Packit 9002b2
    eval { $parser->fnerk };
Packit 9002b2
    ok( $@, "There is no fnerk." );
Packit 9002b2
Packit 9002b2
}
Packit 9002b2
Packit 9002b2
# ------------------------------------------------------------------------
Packit 9002b2
Packit 9002b2
pass "All done.";
Packit 9002b2
Packit 9002b2
done_testing();