Blame t/05_cut_off_year.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 => 24;
Packit 106d3f
Packit 106d3f
use DateTime::Format::ISO8601;
Packit 106d3f
Packit 106d3f
# DefaultCutOffYear()
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    is( DateTime::Format::ISO8601->DefaultCutOffYear, 49,
Packit 106d3f
        "class default DefaultCutOffYear()" );
Packit 106d3f
    is( DateTime::Format::ISO8601->new->cut_off_year, 49,
Packit 106d3f
        "object default DefaultCutOffYear()" );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    my $failed = 0;
Packit 106d3f
Packit 106d3f
    foreach my $n ( 0 .. 99 ) {
Packit 106d3f
        DateTime::Format::ISO8601->DefaultCutOffYear( $n );
Packit 106d3f
Packit 106d3f
        $failed++ unless DateTime::Format::ISO8601->DefaultCutOffYear == $n;
Packit 106d3f
        $failed++ unless DateTime::Format::ISO8601->new->cut_off_year == $n;
Packit 106d3f
    }
Packit 106d3f
Packit 106d3f
    is( $failed, 0, "set default DefaultCutOffYear()" );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
foreach my $n ( -3 .. -1, 100 .. 102 ) {
Packit 106d3f
    eval { DateTime::Format::ISO8601->DefaultCutOffYear( $n ) };
Packit 106d3f
    like( $@, qr/did not pass the 'is between 0 and 99' callback/ );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
# restore default cut off year behavior
Packit 106d3f
DateTime::Format::ISO8601->DefaultCutOffYear( 49 );
Packit 106d3f
Packit 106d3f
# set_cut_off_year()
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    my $failed = 0;
Packit 106d3f
Packit 106d3f
    foreach my $n ( 0 .. 99 ) {
Packit 106d3f
        {
Packit 106d3f
            my $iso_parser = DateTime::Format::ISO8601->new( cut_off_year => $n );
Packit 106d3f
            $failed++ unless UNIVERSAL::isa( $iso_parser, 'DateTime::Format::ISO8601' );
Packit 106d3f
            $failed++ unless $iso_parser->cut_off_year == $n;
Packit 106d3f
        }
Packit 106d3f
Packit 106d3f
        {
Packit 106d3f
            my $iso_parser = DateTime::Format::ISO8601->new->set_cut_off_year( $n );
Packit 106d3f
            $failed++ unless $iso_parser->cut_off_year == $n;
Packit 106d3f
        }
Packit 106d3f
    }
Packit 106d3f
Packit 106d3f
    is( $failed, 0, "set_cut_off_year()" );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
foreach my $n ( -3 .. -1, 100 .. 102 ) {
Packit 106d3f
    eval { DateTime::Format::ISO8601->new( cut_off_year => $n ) };
Packit 106d3f
    like( $@, qr/did not pass the 'is between 0 and 99' callback/,
Packit 106d3f
        "cut_off_year value out of range" );
Packit 106d3f
Packit 106d3f
    eval { DateTime::Format::ISO8601->new->set_cut_off_year( $n ) };
Packit 106d3f
    like( $@, qr/did not pass the 'is between 0 and 99' callback/,
Packit 106d3f
        "set_cut_off_year() value out of range" );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
# parse_datetime() as a class method
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    my $failed = 0;
Packit 106d3f
Packit 106d3f
    foreach my $n ( 0 .. 99 ) {
Packit 106d3f
        DateTime::Format::ISO8601->DefaultCutOffYear( $n );
Packit 106d3f
Packit 106d3f
        foreach my $i ( 0 .. DateTime::Format::ISO8601->DefaultCutOffYear ) {
Packit 106d3f
            my $tdy = sprintf( "%02d", $i );
Packit 106d3f
            my $dt = DateTime::Format::ISO8601->parse_datetime( "-$tdy" );
Packit 106d3f
            $failed++ unless ( $dt->year eq "20$tdy" );
Packit 106d3f
                
Packit 106d3f
        }
Packit 106d3f
Packit 106d3f
        foreach my $i ( ( DateTime::Format::ISO8601->DefaultCutOffYear + 1 ) .. 99 ) {
Packit 106d3f
            my $tdy = sprintf( "%02d", $i );
Packit 106d3f
            my $dt = DateTime::Format::ISO8601->parse_datetime( "-$tdy" );
Packit 106d3f
            $failed++ unless ( $dt->year eq "19$tdy" );
Packit 106d3f
        }
Packit 106d3f
    }
Packit 106d3f
Packit 106d3f
    is( $failed, 0, "parse_datetime() as a class method" );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
# parse_datetime() as an object method
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    my $failed = 0;
Packit 106d3f
Packit 106d3f
    foreach my $n ( 0 .. 99 ) {
Packit 106d3f
        my $iso_parser = DateTime::Format::ISO8601->new( cut_off_year => $n );
Packit 106d3f
Packit 106d3f
        foreach my $i ( 0 .. $iso_parser->cut_off_year ) {
Packit 106d3f
            my $tdy = sprintf( "%02d", $i );
Packit 106d3f
            my $dt = $iso_parser->parse_datetime( "-$tdy" );
Packit 106d3f
            $failed++ unless ( $dt->year eq "20$tdy" );
Packit 106d3f
        }
Packit 106d3f
Packit 106d3f
        foreach my $i ( ( $iso_parser->cut_off_year + 1 ) .. 99 ) {
Packit 106d3f
            my $tdy = sprintf( "%02d", $i );
Packit 106d3f
            my $dt = $iso_parser->parse_datetime( "-$tdy" );
Packit 106d3f
            $failed++ unless ( $dt->year eq "19$tdy" );
Packit 106d3f
        }
Packit 106d3f
    }
Packit 106d3f
    
Packit 106d3f
    is( $failed, 0, "parse_datetime() as an object method" );
Packit 106d3f
}