1#!perl -w 2 3# t/009_regexp.t - Patterns as regular expressions 4 5use Test::More 0.88; 6use DateTime; 7use DateTime::Format::Strptime; 8 9test( 10 pattern => qr/%Y-%m-%d/, 11 input => '2009-07-13', 12 output => { year => 2009, month => 7, day => 13 } 13); 14 15test( 16 pattern => qr/%Y-%m-%d Static Text/, 17 input => '2009-07-13 Static Text', 18 output => { year => 2009, month => 7, day => 13 } 19); 20 21test( 22 pattern => qr/%Y-%m-%d \w+\s\w+/, 23 input => '2009-07-13 Static Text', 24 output => { year => 2009, month => 7, day => 13 } 25); 26 27test( 28 pattern => qr/^%Y-%m-%d \w+\s\w+$/, 29 input => '2009-07-13 Static Text', 30 output => { year => 2009, month => 7, day => 13 } 31); 32 33eval { 34 my $strptime = DateTime::Format::Strptime->new( 35 pattern => qr/^%Y-%m-%d \s+$/, 36 on_error => 'croak', 37 ); 38 my $parsed = $strptime->parse_datetime('2009-07-13 Static Text'); 39}; 40is( substr( $@, 0, 42 ), "Your datetime does not match your pattern.", 41 "The strp pattern is OK, but the regex doesn't match the input." ); 42 43sub test { 44 my %arg = @_; 45 46 my $strptime = DateTime::Format::Strptime->new( 47 pattern => $arg{pattern} || '%F %T', 48 locale => $arg{locale} || 'en', 49 time_zone => $arg{time_zone} || 'UTC', 50 diagnostic => $arg{diagnostic} || 0, 51 on_error => $arg{on_error} || 'undef', 52 ); 53 isa_ok( $strptime, 'DateTime::Format::Strptime' ); 54 55 my $parsed = $strptime->parse_datetime( $arg{input} ); 56 isa_ok( $parsed, 'DateTime' ); 57 58 foreach my $k ( keys %{ $arg{output} } ) { 59 is( $parsed->$k, $arg{output}{$k} ); 60 } 61} 62 63done_testing(); 64