Blame t/fixyears.t

Packit e99357
use strict;
Packit e99357
use Test::More tests => 27;
Packit e99357
use vars qw( $class );
Packit e99357
BEGIN {
Packit e99357
    $class = 'DateTime::Format::Mail';
Packit e99357
    use_ok $class;
Packit e99357
}
Packit e99357
Packit e99357
sub run_our_tests
Packit e99357
{
Packit e99357
    my ($fn, $testsuite) = @_;
Packit e99357
    for my $label (sort keys %$testsuite)
Packit e99357
    {
Packit e99357
	my $tests = $testsuite->{$label};
Packit e99357
	for my $input (sort keys %$tests)
Packit e99357
	{
Packit e99357
	    my $expected = $tests->{$input};
Packit e99357
	    is $fn->( $input ) => $expected => "$label ($input)";
Packit e99357
	}
Packit e99357
    }
Packit e99357
}
Packit e99357
Packit e99357
# Test defaults
Packit e99357
Packit e99357
{
Packit e99357
    my $fn = sub {
Packit e99357
	$class->fix_year( @_ );
Packit e99357
    };
Packit e99357
Packit e99357
    my %testsuite = (
Packit e99357
	'valid' => {
Packit e99357
	    '1900' => '1900',
Packit e99357
	    '2000' => '2000',
Packit e99357
	    '2900' => '2900',
Packit e99357
	},
Packit e99357
	'low' => {
Packit e99357
	    '10' => '2010',
Packit e99357
	    '40' => '2040',
Packit e99357
	},
Packit e99357
	'high' => {
Packit e99357
	    '70' => '1970',
Packit e99357
	    '90' => '1990',
Packit e99357
	},
Packit e99357
        default => {
Packit e99357
            '49' => '2049',
Packit e99357
            '50' => '1950',
Packit e99357
        },
Packit e99357
    );
Packit e99357
    run_our_tests( $fn => \%testsuite );
Packit e99357
}
Packit e99357
Packit e99357
# Test customs
Packit e99357
Packit e99357
{
Packit e99357
    my $parser = $class->new();
Packit e99357
    isa_ok( $parser => $class );
Packit e99357
    is( $parser->year_cutoff => 49, "Default is default." );
Packit e99357
    $parser->set_year_cutoff( 20 );
Packit e99357
    is( $parser->year_cutoff => 20, "Default overriden." );
Packit e99357
}
Packit e99357
Packit e99357
{
Packit e99357
    my $parser = $class->new( year_cutoff => 20 );
Packit e99357
    my $fn = sub {
Packit e99357
	$parser->fix_year( @_ );
Packit e99357
    };
Packit e99357
Packit e99357
    my %testsuite = (
Packit e99357
	'valid' => {
Packit e99357
	    '1900' => '1900',
Packit e99357
	    '2000' => '2000',
Packit e99357
	    '2900' => '2900',
Packit e99357
	},
Packit e99357
	'low' => {
Packit e99357
	    '10' => '2010',
Packit e99357
	},
Packit e99357
	'high' => {
Packit e99357
	    '40' => '1940',
Packit e99357
	    '70' => '1970',
Packit e99357
	    '90' => '1990',
Packit e99357
	},
Packit e99357
    );
Packit e99357
    run_our_tests( $fn => \%testsuite );
Packit e99357
}
Packit e99357
Packit e99357
# Test bad arguments
Packit e99357
{
Packit e99357
    my $parser = $class->new();
Packit e99357
    isa_ok( $parser => $class );
Packit e99357
    is( $parser->year_cutoff => 49, "Default is default." );
Packit e99357
    eval { $parser->set_year_cutoff( ) };
Packit e99357
    ok( $@, "Error with no args" );
Packit e99357
    eval { $parser->set_year_cutoff( 20, 40) };
Packit e99357
    ok( $@, "Error with two args" );
Packit e99357
    eval { $parser->set_year_cutoff( undef ) };
Packit e99357
    ok( $@, "Error with undef arg" );
Packit e99357
    eval { $parser->set_year_cutoff( 100 ) };
Packit e99357
    ok( $@, "Error with arg too big" );
Packit e99357
    eval { $parser->set_year_cutoff( -1 ) };
Packit e99357
    ok( $@, "Error with arg negative" );
Packit e99357
}