File: altcon.t

package info (click to toggle)
libdatetime-format-builder-perl 0.8300-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 504 kB
  • sloc: perl: 1,236; makefile: 2
file content (71 lines) | stat: -rw-r--r-- 1,979 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
use strict;
use warnings;

use Test::More;

use DateTime::Format::Builder;

# ------------------------------------------------------------------------

sub do_check {
    my ( $parser, $date, $values ) = @_;
    my $parsed = $parser->parse( 'DateTime::Format::Builder', $date );
    isa_ok( $parsed => 'DateTime' );
    is( $parsed->year()  => $values->[0], "Year is right" );
    is( $parsed->month() => $values->[1], "Month is right" );
    is( $parsed->day()   => $values->[2], "Day is right" );
}

{
    my $parser = DateTime::Format::Builder->create_parser(
        {
            #YYYY-DDD 1985-102
            regex       => qr/^ (\d{4}) -?? (\d{3}) $/x,
            params      => [qw( year day_of_year )],
            constructor => [ 'DateTime', 'from_day_of_year' ],
        },
        {
            regex       => qr/^ (\d{4}) foo (\d{3}) $/x,
            params      => [qw( year day_of_year )],
            constructor => sub {
                my $self = shift;
                DateTime->from_day_of_year(@_);
            },
        }
    );

    my %dates = (
        '1985-102' => [ 1985, 4, 12 ],
        '2004-102' => [ 2004, 4, 11 ],    # leap year
    );

    for my $date ( sort keys %dates ) {
        my $values = $dates{$date};
        do_check( $parser, $date, $values );
        $date =~ s/-/foo/;
        do_check( $parser, $date, $values );
    }
}

{
    my $parser = DateTime::Format::Builder->create_parser(
        {
            regex       => qr/^ (\d+) $/x,
            params      => [qw( epoch )],
            constructor => [ 'DateTime', 'from_epoch' ]
        }
    );
    my %epochs = (
        1057279398 => '2003-07-04T00:43:18',
    );
    for my $epoch ( sort keys %epochs ) {
        my $check = $epochs{$epoch};
        my $dt    = $parser->parse( 'DateTime::Format::Builder', $epoch );
        isa_ok( $dt => 'DateTime' );
        is( $dt->datetime => $check, "Epoch of $epoch to $check" );
    }
}

pass 'All done';

done_testing();