File: 04-formats.t

package info (click to toggle)
libdate-extract-perl 0.07-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 284 kB
  • sloc: perl: 343; makefile: 2
file content (84 lines) | stat: -rw-r--r-- 2,761 bytes parent folder | download
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
use strict;
use warnings;
use Test::More;
use Date::Extract;

my %formats = (
    'today'    =>
        sub { is($_->ymd, DateTime->today->ymd, "today") },
    'tomorrow' =>
        sub { is($_->ymd, DateTime->today->add(days => 1)->ymd, "tomorrow") },
    'yesterday' =>
        sub { is($_->ymd, DateTime->today->add(days => -1)->ymd, "yesterday") },
    'last Friday' =>
        sub {
            is($_->day_name, 'Friday', "last Friday");
            cmp_ok($_->epoch, '<', DateTime->today->epoch, "last Friday");
        },
    'next Monday' =>
        sub {
            is($_->day_name, 'Monday', "next Monday");
            cmp_ok($_->epoch, '>', DateTime->today->epoch, "next Monday");
        },
    'previous Sat' => {
        TODO => 'Not handled by us or DTFN yet',
        test => sub {
            is($_->day_name, 'Saturday', "previous Sat");
            cmp_ok($_->epoch, '<', DateTime->today->epoch, "previous Sat");
        },
    },
    'Monday' =>
        sub { is($_->day_name, 'Monday', "Monday") },
    'Mon' =>
        sub { is($_->day_name, 'Monday', "Mon") },
    'November 13th, 1986' =>
        sub { is($_->ymd, '1986-11-13', "November 13th, 1986") },
    '13 November 1986' =>
        sub { is($_->ymd, '1986-11-13', "13 November 1986") },
    'Nov 13, 1986' =>
        sub { is($_->ymd, '1986-11-13', "Nov 13th, 1986") },
    'November 13th' =>
        sub { is($_->ymd, DateTime->today->year . '-11-13', "November 13th") },
    'Nov 13' =>
        sub { is($_->ymd, DateTime->today->year . '-11-13', "Nov 13") },
    '13 Nov' =>
        sub { is($_->ymd, DateTime->today->year . '-11-13', "13 Nov") },
    '13th November' =>
        sub { is($_->ymd, DateTime->today->year . '-11-13', "13th November") },
    '1986/11/13' =>
        sub { is($_->ymd, '1986-11-13', "1986/11/13") },
    '1986-11-13' =>
        sub { is($_->ymd, '1986-11-13', "1986-11-13") },
    '11-13-86' => {
        TODO => 'Not handled by us or DTFN yet',
        test => sub { is($_->ymd, '1986-11-13', "11-13-86") },
    },
    '11/13/1986' => {
        TODO => 'Not handled by us or DTFN yet',
        test => sub { is($_->ymd, '1986-11-13', "11/13/1986") },
    },
);

plan tests => 2 + 2 * keys(%formats);

while (my ($input, $checker) = each %formats) {
    $checker = { test => $checker }
        if ref $checker eq 'CODE';

    TODO: {
        local $TODO = $checker->{'TODO'} if $checker->{'TODO'};

        my $got = Date::Extract->extract($input);
        ok($got, "got a date out of $input");

        unless ($got) {
            fail("No date parsed, so no use running the checker");
            next;
        }

        local $_ = $got;
        local $Test::Builder::Level = $Test::Builder::Level + 1;
        $checker->{'test'}->();
    }
}