#!perl -w # t/009_regexp.t - Patterns as regular expressions use Test::More tests => 21; use DateTime; use DateTime::Format::Strptime; test( pattern => qr/%Y-%m-%d/, input => '2009-07-13', output => { year => 2009, month => 7, day => 13 } ); test( pattern => qr/%Y-%m-%d Static Text/, input => '2009-07-13 Static Text', output => { year => 2009, month => 7, day => 13 } ); test( pattern => qr/%Y-%m-%d \w+\s\w+/, input => '2009-07-13 Static Text', output => { year => 2009, month => 7, day => 13 } ); test( pattern => qr/^%Y-%m-%d \w+\s\w+$/, input => '2009-07-13 Static Text', output => { year => 2009, month => 7, day => 13 } ); eval { my $strptime = DateTime::Format::Strptime->new( pattern => qr/^%Y-%m-%d \s+$/, on_error => 'croak', ); my $parsed = $strptime->parse_datetime('2009-07-13 Static Text'); }; is( substr( $@, 0, 42 ), "Your datetime does not match your pattern.", "The strp pattern is OK, but the regex doesn't match the input." ); sub test { my %arg = @_; my $strptime = DateTime::Format::Strptime->new( pattern => $arg{pattern} || '%F %T', locale => $arg{locale} || 'en', time_zone => $arg{time_zone} || 'UTC', diagnostic => $arg{diagnostic} || 0, on_error => $arg{on_error} || 'undef', ); isa_ok( $strptime, 'DateTime::Format::Strptime' ); my $parsed = $strptime->parse_datetime( $arg{input} ); isa_ok( $parsed, 'DateTime' ); foreach my $k ( keys %{ $arg{output} } ) { is( $parsed->$k, $arg{output}{$k} ); } }