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 72
|
use strict;
use warnings;
use Test::Fatal;
use Test::More;
use DateTime;
my $badlt_rx = qr/Invalid local time|local time [0-9\-:T]+ does not exist/;
{
like(
exception {
DateTime->new(
year => 2003, month => 4, day => 6,
hour => 2, time_zone => 'America/Chicago',
);
},
$badlt_rx,
'exception for invalid time'
);
like(
exception {
DateTime->new(
year => 2003, month => 4, day => 6,
hour => 2, minute => 59, second => 59,
time_zone => 'America/Chicago',
);
},
$badlt_rx,
'exception for invalid time'
);
}
{
is(
exception {
DateTime->new(
year => 2003, month => 4, day => 6,
hour => 1, minute => 59, second => 59,
time_zone => 'America/Chicago',
);
},
undef,
'no exception for valid time'
);
my $dt = DateTime->new(
year => 2003, month => 4, day => 5,
hour => 2,
time_zone => 'America/Chicago',
);
like(
exception { $dt->add( days => 1 ) },
$badlt_rx,
'exception for invalid time produced via add'
);
$dt->add( days => 2 );
my $dt2 = DateTime->new(
year => 2003, month => 4, day => 5,
hour => 2,
time_zone => 'America/Chicago',
)->add( days => 2 );
is( $dt, $dt2, 'adding after failed addition leads to correct result' );
}
done_testing();
|