1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
use strict;
use warnings;
use Test::More;
use DateTime::Format::Builder;
{
eval q[
package SampleDispatch;
use DateTime::Format::Builder
(
parsers => {
parse_datetime => [
{
Dispatch => sub {
return 'fnerk';
}
}
]
},
groups => {
fnerk => [
{
regex => qr/^(\d{4})(\d\d)(\d\d)$/,
params => [qw( year month day )],
},
]
}
);
];
ok( !$@, "No errors when creating the class." );
if ($@) { diag $@; exit }
my $parser = SampleDispatch->new();
isa_ok( $parser => 'SampleDispatch' );
my $dt = eval { $parser->parse_datetime("20040506") };
ok( !$@, "No errors when parsing." );
if ($@) { diag $@; exit }
isa_ok( $dt => 'DateTime' );
is( $dt->year => 2004, 'Year is 2004' );
is( $dt->month => 5, 'Month is 5' );
is( $dt->day => 6, 'Day is 6' );
eval { $parser->fnerk };
ok( $@, "There is no fnerk." );
}
{
eval q[
package SampleDispatchB;
use DateTime::Format::Builder;
DateTime::Format::Builder->create_class(
parsers => {
parse_datetime => [
{
Dispatch => sub {
return( 8, 6 );
}
},
],
},
groups => {
8 => [
{
regex => qr/^ (\d{4}) (\d\d) (\d\d) $/x,
params => [ qw( year month day ) ],
},
],
6 => [
{
regex => qr/^ (\d{4}) (\d\d) $/x,
params => [ qw( year month ) ],
},
],
}
);
];
ok( !$@, "No errors when creating the class." );
if ($@) { diag $@; exit }
my $parser = SampleDispatchB->new();
isa_ok( $parser => 'SampleDispatchB' );
{
my $dt = eval { $parser->parse_datetime("20040506") };
ok( !$@, "No errors when parsing." );
if ($@) { diag $@; exit }
isa_ok( $dt => 'DateTime' );
is( $dt->year => 2004, 'Year is 2004' );
is( $dt->month => 5, 'Month is 5' );
is( $dt->day => 6, 'Day is 6' );
}
{
my $dt = eval { $parser->parse_datetime("200311") };
ok( !$@, "No errors when parsing." );
if ($@) { diag $@; exit }
isa_ok( $dt => 'DateTime' );
is( $dt->year => 2003, 'Year is 2003' );
is( $dt->month => 11, 'Month is 11' );
is( $dt->day => 1, 'Day is 1' );
}
eval { $parser->fnerk };
ok( $@, "There is no fnerk." );
}
# ------------------------------------------------------------------------
pass "All done.";
done_testing();
|