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