Blame t/03_base_datetime.t

Packit 106d3f
#!/usr/bin/perl
Packit 106d3f
Packit 106d3f
# Copyright (C) 2005  Joshua Hoblitt
Packit 106d3f
Packit 106d3f
use strict;
Packit 106d3f
use warnings;
Packit 106d3f
Packit 106d3f
use lib qw( ./lib );
Packit 106d3f
Packit 106d3f
use Test::More tests => 36;
Packit 106d3f
Packit 106d3f
use DateTime;
Packit 106d3f
use DateTime::Format::ISO8601;
Packit 106d3f
Packit 106d3f
my @good_bases = (
Packit 106d3f
    { year => 0 },
Packit 106d3f
    { year => 1 },
Packit 106d3f
    { year => 2500 },
Packit 106d3f
    { year => 5000 },
Packit 106d3f
    { year => 7500 },
Packit 106d3f
    { year => 9998 },
Packit 106d3f
    {
Packit 106d3f
        year    => 9999,
Packit 106d3f
        month   => 12,
Packit 106d3f
        day     => 12,
Packit 106d3f
        hour    => 23,
Packit 106d3f
        minute  => 59,
Packit 106d3f
        second  => 59,
Packit 106d3f
        nanosecond => 999_999_999,
Packit 106d3f
    },
Packit 106d3f
);
Packit 106d3f
Packit 106d3f
my @test_bases = (
Packit 106d3f
    [ "1945-09-02T09:04", '1945-W35' ],
Packit 106d3f
    [ "1987-12-18T02:03", '1987-W51' ],
Packit 106d3f
    [ "1988-05-05T04:05", '1988-W18' ],
Packit 106d3f
    [ "1989-10-18T06:07", '1989-W42' ],
Packit 106d3f
    [ "1991-03-21T08:09", '1991-W12' ],
Packit 106d3f
);
Packit 106d3f
Packit 106d3f
my @bad_bases = (
Packit 106d3f
    { year => -2 },
Packit 106d3f
    { year => -1 },
Packit 106d3f
    {
Packit 106d3f
        year        => -1,
Packit 106d3f
        month       => 12,
Packit 106d3f
        day         => 31,
Packit 106d3f
        hour        => 23,
Packit 106d3f
        minute      => 59,
Packit 106d3f
        second      => 59,
Packit 106d3f
        nanosecond  => 999_999_999
Packit 106d3f
    },
Packit 106d3f
    { year => 10_000 },
Packit 106d3f
    { year => 10_001 },
Packit 106d3f
    { year => 10_002 },
Packit 106d3f
);
Packit 106d3f
Packit 106d3f
foreach my $params ( @good_bases ) {
Packit 106d3f
    my $dt = DateTime->new( %$params );
Packit 106d3f
Packit 106d3f
    {
Packit 106d3f
        my $iso_parser = DateTime::Format::ISO8601->new(
Packit 106d3f
            base_datetime => $dt,
Packit 106d3f
        );
Packit 106d3f
        isa_ok( $iso_parser, 'DateTime::Format::ISO8601' );
Packit 106d3f
    }
Packit 106d3f
Packit 106d3f
    {
Packit 106d3f
        my $iso_parser = DateTime::Format::ISO8601->new->set_base_datetime(
Packit 106d3f
            object => $dt,
Packit 106d3f
        );
Packit 106d3f
        isa_ok( $iso_parser, 'DateTime::Format::ISO8601' );
Packit 106d3f
    }
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
foreach ( @test_bases ) {
Packit 106d3f
    my $iso_parser = DateTime::Format::ISO8601->new(
Packit 106d3f
        base_datetime => DateTime::Format::ISO8601->parse_datetime( $_->[0] ),
Packit 106d3f
    );
Packit 106d3f
Packit 106d3f
    {
Packit 106d3f
        #tests...
Packit 106d3f
        #_add_minute
Packit 106d3f
        #_add_hour
Packit 106d3f
        #_add_day
Packit 106d3f
        #_add_month
Packit 106d3f
        #_add_year
Packit 106d3f
Packit 106d3f
        #--ss,s --50,5
Packit 106d3f
        my $dt = $iso_parser->parse_datetime( '--50,5' );
Packit 106d3f
        is( $dt->strftime( "%Y-%m-%dT%H:%M" ), $_->[0] );
Packit 106d3f
    }
Packit 106d3f
Packit 106d3f
    {
Packit 106d3f
        #tests...
Packit 106d3f
        #_add_week
Packit 106d3f
        #_add_year
Packit 106d3f
Packit 106d3f
        #-W-D -W-5
Packit 106d3f
        my $dt = $iso_parser->parse_datetime( '-W-5' );
Packit 106d3f
        is( $dt->strftime( "%Y-W%V" ), $_->[1] );
Packit 106d3f
    }
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
foreach my $params ( @bad_bases ) {
Packit 106d3f
    my $dt = DateTime->new( %$params );
Packit 106d3f
Packit 106d3f
    eval {
Packit 106d3f
        DateTime::Format::ISO8601->new(
Packit 106d3f
            base_datetime => $dt,
Packit 106d3f
        );
Packit 106d3f
    };
Packit 106d3f
    like( $@, qr/base_datetime must be (greater|less) then/ );
Packit 106d3f
Packit 106d3f
    eval {
Packit 106d3f
        DateTime::Format::ISO8601->new->set_base_datetime(
Packit 106d3f
            object => $dt,
Packit 106d3f
        );
Packit 106d3f
    };
Packit 106d3f
    like( $@, qr/base_datetime must be (greater|less) then/ );
Packit 106d3f
}