|
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 |
}
|