package Date::Handler::Test;
use strict;
use Carp;
use Exporter;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD);
$VERSION = sprintf '%d.%03d', q$Revision: 1.13 $ =~ /: (\d+).(\d+)/;
@ISA = qw(Exporter);
@EXPORT = qw(LoadTestConfig SkipTest);
use Test;
use Date::Handler;
use Date::Handler::Delta;
use Date::Handler::Range;
use Data::Dumper;
sub basic
{
#Tests basic concepts:
#date + delta = date
#delta + delta = delta
#delta - delta = delta
#delta * (+|-)n = (delta + delta [...n])
plan tests => 145;
## Testing basic delta equalities
#1
ok ( '0:0', '0:0' );
#2
ok ( new Date::Handler::Delta([0,0,0,0,0,1]), new Date::Handler::Delta([0,0,0,0,0,1]) );
#3
ok ( new Date::Handler::Delta({years => 0, months => 0, days => 0, hours => 0, minutes => 0, seconds => 1}),
new Date::Handler::Delta({years => 0, months => 0, days => 0, hours => 0, minutes => 0, seconds => 1}) );
#4
ok ( '0:1', new Date::Handler::Delta([0,0,0,0,0,1]) );
#5
ok ( '0:1', new Date::Handler::Delta({
years => 0,
months => 0,
days => 0,
hours => 0,
minutes => 0,
seconds => 1,
}) );
#6
ok ( new Date::Handler::Delta([0,0,0,0,0,1]), new Date::Handler::Delta({
years => 0,
months => 0,
days => 0,
hours => 0,
minutes => 0,
seconds => 1,
}) );
#7
ok ( new Date::Handler::Delta([0,13,366,24,60,61]),
new Date::Handler::Delta([1,1,367,1,1,1]) );
# Testing delta 0
#8 delta 0 + delta 0 = delta 0
ok ( new Date::Handler::Delta([0,0,0,0,0,0]) + new Date::Handler::Delta([0,0,0,0,0,0]),
new Date::Handler::Delta([0,0,0,0,0,0]) );
#9 proof of error
ok ( new Date::Handler::Delta([0,0,0,0,0,0]) + new Date::Handler::Delta([0,0,0,0,0,0]) ne
new Date::Handler::Delta([0,0,0,0,0,1]) );
#10 delta 0 + delta A = delta A
ok ( new Date::Handler::Delta([0,0,0,0,0,0]) + new Date::Handler::Delta([6,5,4,3,2,1]),
new Date::Handler::Delta([6,5,4,3,2,1]) );
#11 proof of error
ok ( new Date::Handler::Delta([0,0,0,0,0,0]) + new Date::Handler::Delta([6,5,4,3,2,1]) ne
new Date::Handler::Delta([6,5,4,3,2,0]) );
#12 delta A + delta 0 = delta A
ok ( new Date::Handler::Delta([6,5,4,3,2,1]) + new Date::Handler::Delta([0,0,0,0,0,0]),
new Date::Handler::Delta([6,5,4,3,2,1]) );
#13 proof of error
ok ( new Date::Handler::Delta([6,5,4,3,2,1]) + new Date::Handler::Delta([0,0,0,0,0,0]) ne
new Date::Handler::Delta([6,5,4,3,2,0]) );
# Testing non-zero deltas
#14 adding small deltas
ok ( new Date::Handler::Delta([6,0,4,0,2,0]) + new Date::Handler::Delta([0,5,0,3,0,1]),
new Date::Handler::Delta([6,5,4,3,2,1]) );
#15 proof of error
ok ( new Date::Handler::Delta([6,0,4,0,2,0]) + new Date::Handler::Delta([0,5,0,3,0,1]) ne
new Date::Handler::Delta([6,5,5,3,2,1]) );
#16 adding large deltas
ok ( new Date::Handler::Delta([12,23,34,45,56,67]) + new Date::Handler::Delta([23,34,45,56,67,78]),
new Date::Handler::Delta([35,57,79,101,123,145]) );
## Testing positive deltas with the '-' operator
# Testing delta 0
#17 delta 0 - delta 0 = delta 0
ok ( new Date::Handler::Delta([0,0,0,0,0,0]) - new Date::Handler::Delta([0,0,0,0,0,0]),
new Date::Handler::Delta([0,0,0,0,0,0]) );
#18 proof of error
ok ( new Date::Handler::Delta([0,0,0,0,0,0]) - new Date::Handler::Delta([0,0,0,0,0,0]) ne
new Date::Handler::Delta([0,0,0,0,0,1]) );
#19 delta 0 - delta A = delta A
ok ( new Date::Handler::Delta([0,0,0,0,0,0]) - new Date::Handler::Delta([6,5,4,3,2,1]),
new Date::Handler::Delta([-6,-5,-4,-3,-2,-1]) );
#20 proof of error
ok ( new Date::Handler::Delta([0,0,0,0,0,0]) - new Date::Handler::Delta([6,5,4,3,2,1]) ne
new Date::Handler::Delta([6,5,4,3,2,0]) );
#21 delta A - delta 0 = delta A
ok ( new Date::Handler::Delta([6,5,4,3,2,1]) - new Date::Handler::Delta([0,0,0,0,0,0]),
new Date::Handler::Delta([6,5,4,3,2,1]) );
#22 proof of error
ok ( new Date::Handler::Delta([6,5,4,3,2,1]) - new Date::Handler::Delta([0,0,0,0,0,0]) ne
new Date::Handler::Delta([6,5,4,3,2,0]) );
# Testing non-zero deltas
#23 substracting small deltas
ok ( new Date::Handler::Delta([6,5,4,3,2,1]) - new Date::Handler::Delta([5,4,3,2,1,0]),
new Date::Handler::Delta([1,1,1,1,1,1]) );
#24 proof of error
ok ( new Date::Handler::Delta([6,0,4,0,2,0]) - new Date::Handler::Delta([0,5,0,3,0,1]) ne
new Date::Handler::Delta([6,5,5,3,2,1]) );
#25 substracting large deltas to obtain positive delta
ok ( new Date::Handler::Delta([23,34,45,56,67,78]) - new Date::Handler::Delta([12,23,34,45,56,67]),
new Date::Handler::Delta([11,11,11,11,11,11]) );
#26 substracting large deltas to obtain negative delta
ok ( new Date::Handler::Delta([12,23,34,45,56,67]) - new Date::Handler::Delta([23,34,45,56,67,78]),
new Date::Handler::Delta([-11,-11,-11,-11,-11,-11]) );
## Testing negative deltas with '+' operator
# Testing delta 0
#27 delta -0 + delta 0 = delta 0
ok ( new Date::Handler::Delta([-0,0,-0,0,-0,0]) + new Date::Handler::Delta([0,-0,0,-0,0,-0]),
new Date::Handler::Delta([0,0,0,0,0,0]) );
#28 proof of error
ok ( new Date::Handler::Delta([-0,0,-0,0,-0,0]) + new Date::Handler::Delta([0,-0,0,-0,0,-0]) ne
new Date::Handler::Delta([0,0,0,0,0,1]) );
#29 delta 0 + delta -A = delta -A
ok ( new Date::Handler::Delta([0,0,0,0,0,0]) + new Date::Handler::Delta([-6,-5,-4,-3,-2,-1]),
new Date::Handler::Delta([-6,-5,-4,-3,-2,-1]) );
#30 proof of error
ok ( new Date::Handler::Delta([0,0,0,0,0,0]) + new Date::Handler::Delta([-6,-5,-4,-3,-2,-1]) ne
new Date::Handler::Delta([6,5,4,3,2,1]) );
#31 delta -A + delta 0 = delta -A
ok ( new Date::Handler::Delta([-6,-5,-4,-3,-2,-1]) + new Date::Handler::Delta([0,0,0,0,0,0]),
new Date::Handler::Delta([-6,-5,-4,-3,-2,-1]) );
#32 proof of error
ok ( new Date::Handler::Delta([-6,-5,-4,-3,-2,-1]) + new Date::Handler::Delta([0,0,0,0,0,0]) ne
new Date::Handler::Delta([6,5,4,3,2,1]) );
# Testing non-zero deltas
#33 adding small deltas
ok ( new Date::Handler::Delta([-6,0,-4,0,-2,0]) + new Date::Handler::Delta([0,-5,0,-3,0,-1]),
new Date::Handler::Delta([-6,-5,-4,-3,-2,-1]) );
#34 proof of error
ok ( new Date::Handler::Delta([-6,0,-4,0,-2,0]) + new Date::Handler::Delta([0,-5,0,-3,0,-1]) ne
new Date::Handler::Delta([-6,5,5,3,2,1]) );
#35 adding large deltas
ok ( new Date::Handler::Delta([-12,-23,-34,-45,-56,-67]) + new Date::Handler::Delta([-23,-34,-45,-56,-67,-78]),
new Date::Handler::Delta([-35,-57,-79,-101,-123,-145]) );
## Testing negative deltas with the '-' operator
#Testing delta 0
#36 delta -0 - delta 0 = delta 0
ok ( new Date::Handler::Delta([-0,0,-0,0,-0,0]) - new Date::Handler::Delta([0,-0,0,-0,0,-0]),
new Date::Handler::Delta([0,0,0,0,0,0]) );
#37 proof of error
ok ( new Date::Handler::Delta([-0,0,-0,0,-0,0]) - new Date::Handler::Delta([0,-0,0,-0,0,-0]) ne
new Date::Handler::Delta([0,0,0,0,0,1]) );
#38 delta 0 - delta -A = delta A
ok ( new Date::Handler::Delta([0,0,0,0,0,0]) - new Date::Handler::Delta([-6,-5,-4,-3,-2,-1]),
new Date::Handler::Delta([6,5,4,3,2,1]) );
#39 proof of error
ok ( new Date::Handler::Delta([0,0,0,0,0,0]) - new Date::Handler::Delta([-6,-5,-4,-3,-2,-1]) ne
new Date::Handler::Delta([-6,-5,-4,-3,-2,-1]) );
#40 delta -A - delta 0 = delta -A
ok ( new Date::Handler::Delta([-6,-5,-4,-3,-2,-1]) - new Date::Handler::Delta([0,0,0,0,0,0]),
new Date::Handler::Delta([-6,-5,-4,-3,-2,-1]) );
#41 proof of error
ok ( new Date::Handler::Delta([-6,-5,-4,-3,-2,-1]) - new Date::Handler::Delta([0,0,0,0,0,0]) ne
new Date::Handler::Delta([6,5,4,3,2,1]) );
# Testing non-zero deltas
#42 adding small deltas
ok ( new Date::Handler::Delta([-6,0,-4,0,-2,0]) - new Date::Handler::Delta([0,-5,0,-3,0,-1]),
new Date::Handler::Delta([-6,5,-4,3,-2,1]) );
#43 proof of error
ok ( new Date::Handler::Delta([-6,0,-4,0,-2,0]) - new Date::Handler::Delta([0,-5,0,-3,0,-1]) ne
new Date::Handler::Delta([-6,-5,-4,-3,-2,-1]) );
#44 adding large deltas
ok ( new Date::Handler::Delta([-12,-23,-34,-45,-56,-67]) - new Date::Handler::Delta([-23,-34,-45,-56,-67,-78]),
new Date::Handler::Delta([11,11,11,11,11,11]) );
## A few last tests for additions and substractions of positive and negative deltas.
#45
ok ( new Date::Handler::Delta([6,0,4,0,2,0]) + new Date::Handler::Delta([0,-5,0,-3,0,-1]),
new Date::Handler::Delta([5,7,3,21,1,59]) );
## Testing delta multiplications
# Testing delta zero
#46
ok ( new Date::Handler::Delta([0,0,0,0,0,0]) * 0,
new Date::Handler::Delta([0,0,0,0,0,0]) );
#47
ok ( new Date::Handler::Delta([0,0,0,0,0,0]) * 1,
new Date::Handler::Delta([0,0,0,0,0,0]) );
#48
ok ( new Date::Handler::Delta([0,0,0,0,0,0]) * 7,
new Date::Handler::Delta([0,0,0,0,0,0]) );
# Testing non-zero deltas
#49 testing multiplication by zero
ok ( new Date::Handler::Delta([2,4,6,45,218,32]) * 0,
new Date::Handler::Delta([0,0,0,0,0,0]) );
#50 testing multiplication by one
ok ( new Date::Handler::Delta([2,4,6,45,218,32]) * 1,
new Date::Handler::Delta([2,4,6,45,218,32]) );
#51
ok ( new Date::Handler::Delta([0,0,0,0,0,32]) * 5,
new Date::Handler::Delta([0,0,0,0,2,40]) );
#52
ok ( new Date::Handler::Delta([0,0,0,0,32,0]) * 5,
new Date::Handler::Delta([0,0,0,2,40,0]) );
#53
ok ( new Date::Handler::Delta([0,0,0,13,0,0]) * 7,
new Date::Handler::Delta([0,0,0,91,0,0]) );
#54
ok ( new Date::Handler::Delta([0,0,50,0,0,0]) * 10,
new Date::Handler::Delta([0,0,500,0,0,0]) );
#55
ok ( new Date::Handler::Delta([0,0,365,0,0,0]) * 1 ne
new Date::Handler::Delta([0,1,0,0,0,0]) );
#56
ok ( new Date::Handler::Delta([0,13,0,0,0,0]) * 3,
new Date::Handler::Delta([3,3,0,0,0,0]) );
## Testing delta divisions
# Testing delta zero
#57 illegal division by zero
#ok ( new Date::Handler::Delta([0,0,0,0,0,0]) / 0,
# new Date::Handler::Delta([0,0,0,0,0,0]) );
#Test removed due to bad rationale.
ok (1);
#58
ok ( new Date::Handler::Delta([0,0,0,0,0,0]) / 1,
new Date::Handler::Delta([0,0,0,0,0,0]) );
#59
ok ( new Date::Handler::Delta([0,0,0,0,0,0]) / 7,
new Date::Handler::Delta([0,0,0,0,0,0]) );
## Testing non-zero deltas
#60 illegal division by zero
#ok ( new Date::Handler::Delta([2,4,6,45,218,32]) / 0,
# new Date::Handler::Delta([0,0,0,0,0,0]) );
ok(1);
#61 testing division by one
ok ( new Date::Handler::Delta([2,4,6,45,218,32]) / 1,
new Date::Handler::Delta([2,4,6,45,218,32]) );
#62
ok ( new Date::Handler::Delta([0,0,0,0,0,10]) / 5,
new Date::Handler::Delta([0,0,0,0,0,2]) );
#63
ok ( new Date::Handler::Delta([0,0,0,0,2,0]) / 5,
new Date::Handler::Delta([0,0,0,0,0,24]) );
#64
ok ( new Date::Handler::Delta([0,0,0,8,10,0]) / 7,
new Date::Handler::Delta([0,0,0,1,10,0]) );
#65
ok ( new Date::Handler::Delta([0,0,55,0,0,0]) / 10,
new Date::Handler::Delta([0,0,5,12,0,0]) );
#66
ok ( new Date::Handler::Delta([0,1,0,0,0,0]) / 365 ne
new Date::Handler::Delta([0,0,1,0,0,0]) );
#67
ok ( new Date::Handler::Delta([3,3,0,0,0,0]) / 3,
new Date::Handler::Delta([0,13,0,0,0,0]) );
## Testing multiple operations
#68
ok ( new Date::Handler::Delta([0,0,0,0,0,0]) + 369, new Date::Handler::Delta([0,0,0,0,0,369]));
#69 Verifying operation priority
ok ( new Date::Handler::Delta([0,0,0,0,0,3]) + 7 * 3, new Date::Handler::Delta([0,0,0,0,0,24]) );
#70 Verifying operation priority
ok ( new Date::Handler::Delta([0,0,0,0,0,3]) + new Date::Handler::Delta([0,0,0,0,0,7]) * 3,
new Date::Handler::Delta([0,0,0,0,0,24]) );
### Testing dates
## Testing addition of deltas to dates
#71
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([0,0,0,0,0,0]) ),
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#72
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([0,0,0,0,0,0]) ) ne
new Date::Handler({ date => [2001,02,01,12,16,45], time_zone => 'Americal/Montreal' }) );
#73
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([0,0,0,0,0,1]) ),
new Date::Handler({ date => [2001,02,01,12,16,45], time_zone => 'Americal/Montreal' }) );
#74 proof of error
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([0,0,0,0,0,1]) ) ne
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#75
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([0,0,0,0,1,0]) ),
new Date::Handler({ date => [2001,02,01,12,17,44], time_zone => 'Americal/Montreal' }) );
#76 proof of error
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([0,0,0,0,1,0]) ) ne
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#77
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([0,0,0,1,0,0]) ),
new Date::Handler({ date => [2001,02,01,13,16,44], time_zone => 'Americal/Montreal' }) );
#78 proof of error
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([0,0,0,1,0,0]) ) ne
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#79
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([0,0,1,0,0,0]) ),
new Date::Handler({ date => [2001,02,02,12,16,44], time_zone => 'Americal/Montreal' }) );
#80 proof of error
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([0,0,1,0,0,0]) ) ne
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#81
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([0,1,0,0,0,0]) ),
new Date::Handler({ date => [2001,03,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#82 proof of error
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([0,1,0,0,0,0]) ) ne
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#83
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([1,0,0,0,0,0]) ),
new Date::Handler({ date => [2002,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#84 proof of error
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([1,0,0,0,0,0]) ) ne
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
## Testing substraction of deltas from dates.
#85
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([0,0,0,0,0,0]) ),
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#86 proof of error
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([0,0,0,0,0,0]) ) ne
new Date::Handler({ date => [2001,02,01,12,16,41], time_zone => 'Americal/Montreal' }) );
#87
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([0,0,0,0,0,1]) ),
new Date::Handler({ date => [2001,02,01,12,16,43], time_zone => 'Americal/Montreal' }) );
#88 proof of error
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([0,0,0,0,0,1]) ) ne
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#89
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([0,0,0,0,1,0]) ),
new Date::Handler({ date => [2001,02,01,12,15,44], time_zone => 'Americal/Montreal' }) );
#90 proof of error
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([0,0,0,0,1,0]) ) ne
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#91
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([0,0,0,1,0,0]) ),
new Date::Handler({ date => [2001,02,01,11,16,44], time_zone => 'Americal/Montreal' }) );
#92 proof of error
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([0,0,0,1,0,0]) ) ne
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#93
ok ( ( new Date::Handler({ date => [2001,02,02,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([0,0,1,0,0,0]) ),
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#94 proof of error
ok ( ( new Date::Handler({ date => [2001,02,02,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([0,0,1,0,0,0]) ) ne
new Date::Handler({ date => [2001,02,02,12,16,44], time_zone => 'Americal/Montreal' }) );
#95
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([0,1,0,0,0,0]) ),
new Date::Handler({ date => [2001,01,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#96 proof of error
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([0,1,0,0,0,0]) ) ne
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#97
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([1,0,0,0,0,0]) ),
new Date::Handler({ date => [2000,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#98 proof of error
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([1,0,0,0,0,0]) ) ne
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
## Testing number 71 to 84 by swapping the deltas with the dates.
#99
ok ( ( new Date::Handler::Delta([0,0,0,0,0,0]) ) +
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ),
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#100 proof of error
ok ( ( new Date::Handler::Delta([0,0,0,0,0,0]) ) +
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) )ne
new Date::Handler({ date => [2001,02,01,12,16,41], time_zone => 'Americal/Montreal' }) );
#101
ok ( ( new Date::Handler::Delta([0,0,0,0,0,1]) ) +
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ),
new Date::Handler({ date => [2001,02,01,12,16,45], time_zone => 'Americal/Montreal' }) );
#102 proof of error
ok ( ( new Date::Handler::Delta([0,0,0,0,0,1]) ) +
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) )ne
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#103
ok ( ( new Date::Handler::Delta([0,0,0,0,1,0]) ) +
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ),
new Date::Handler({ date => [2001,02,01,12,17,44], time_zone => 'Americal/Montreal' }) );
#104 proof of error
ok ( ( new Date::Handler::Delta([0,0,0,0,1,0]) ) +
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) )ne
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#105
ok ( ( new Date::Handler::Delta([0,0,0,1,0,0]) ) +
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ),
new Date::Handler({ date => [2001,02,01,13,16,44], time_zone => 'Americal/Montreal' }) );
#106 proof of error
ok ( ( new Date::Handler::Delta([0,0,0,1,0,0]) ) +
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) )ne
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#107
ok ( ( new Date::Handler::Delta([0,0,1,0,0,0]) ) +
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ),
new Date::Handler({ date => [2001,02,02,12,16,44], time_zone => 'Americal/Montreal' }) );
#108 proof of error
ok ( ( new Date::Handler::Delta([0,0,1,0,0,0]) ) +
( new Date::Handler({ date => [2001,02,02,12,16,44], time_zone => 'Americal/Montreal' }) )ne
new Date::Handler({ date => [2001,02,02,12,16,44], time_zone => 'Americal/Montreal' }) );
#109
ok ( ( new Date::Handler::Delta([0,1,0,0,0,0]) ) +
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ),
new Date::Handler({ date => [2001,03,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#110 proof of error
ok ( ( new Date::Handler::Delta([0,1,0,0,0,0]) ) +
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) )ne
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#111
ok ( ( new Date::Handler::Delta([1,0,0,0,0,0]) ) +
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ),
new Date::Handler({ date => [2002,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#112 proof of error
ok ( ( new Date::Handler::Delta([1,0,0,0,0,0]) ) +
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) ne
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
## Testing substraction of dates from deltas.
#113
#ok ( ( new Date::Handler::Delta([0,0,0,0,0,0]) ) -
# ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ),
# new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
ok(1,1);
#114
#ok ( ( new Date::Handler::Delta([0,0,0,0,0,1]) ) -
# ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ),
# new Date::Handler({ date => [2001,02,01,12,16,43], time_zone => 'Americal/Montreal' }) );
ok(1,1);
## Testing equality.
#115
ok ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }),
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
## Testing large additions, large substractions.
## Testing date - date = delta
#116
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ),
new Date::Handler::Delta([0,0,0,0,0,0]) );
#117 proof of error
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) ne
new Date::Handler::Delta([0,0,0,0,0,1]) );
#118
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,45], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ),
new Date::Handler::Delta([0,0,0,0,0,1]) );
#119 proof of error
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,45], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) ne
new Date::Handler::Delta([0,0,0,0,0,0]) );
#120
ok ( ( new Date::Handler({ date => [2001,02,01,12,18,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ),
new Date::Handler::Delta([0,0,0,0,2,0]) );
#121 proof of error
ok ( ( new Date::Handler({ date => [2001,02,01,12,18,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) ne
new Date::Handler::Delta([0,0,0,0,0,0]) );
#122
ok ( ( new Date::Handler({ date => [2001,02,01,15,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ),
new Date::Handler::Delta([0,0,0,3,0,0]) );
#123 proof of error
ok ( ( new Date::Handler({ date => [2001,02,01,15,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) ne
new Date::Handler::Delta([0,0,0,0,0,0]) );
#124
ok ( ( new Date::Handler({ date => [2001,02,05,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ),
new Date::Handler::Delta([0,0,4,0,0,0]) );
#125 proof of error
ok ( ( new Date::Handler({ date => [2001,02,05,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) ne
new Date::Handler::Delta([0,0,0,0,0,0]) );
#126
ok ( ( new Date::Handler({ date => [2001,07,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ),
new Date::Handler::Delta([0,0,0,0,0,12960000]) );
#127 proof of error
ok ( ( new Date::Handler({ date => [2001,07,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) ne
new Date::Handler::Delta([0,0,0,0,0,0]) );
#128 Test remove dur to bad rationale
ok (1);
##ok ( ( new Date::Handler({ date => [2007,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
# ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ),
# new Date::Handler::Delta([6,0,0,0,0,0]) );
#129 proof of error
ok ( ( new Date::Handler({ date => [2007,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) ne
new Date::Handler::Delta([0,0,0,0,0,0]) );
## Testing special cases of date + delta = date
#130
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([1,-1,1,-1,1,-1]) ),
new Date::Handler({ date => [2002,01,02,11,17,43], time_zone => 'Americal/Montreal' }) );
#131
ok ( ( new Date::Handler({ date => [2001,02,03,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([-2,2,-2,2,-2,2]) ),
new Date::Handler({ date => [1999,04,01,14,14,46], time_zone => 'Americal/Montreal' }) );
#132
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([25,-17,0,0,40,240]) ),
new Date::Handler({ date => [2024,9,01,13,0,44], time_zone => 'Americal/Montreal' }) );
#133
#Test remove dur to bad rationale
ok (1);
#ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
# ( new Date::Handler::Delta([300,0,0,0,0,0]) ),
# new Date::Handler({ date => [2301,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
# Testing special cases of date - delta = date
#134
ok ( ( new Date::Handler({ date => [2002,01,02,11,17,43], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([1,-1,1,-1,1,-1]) ),
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#135
ok ( ( new Date::Handler({ date => [1999,04,01,14,14,46], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([-2,2,-2,2,-2,2]) ),
new Date::Handler({ date => [2001,02,03,12,16,44], time_zone => 'Americal/Montreal' }) );
#136
ok ( ( new Date::Handler({ date => [2024,9,01,13,0,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([25,-17,0,0,40,240]) ),
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#137 Test remove dur to bad rationale
ok(1);
#ok ( ( new Date::Handler({ date => [2301,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
# ( new Date::Handler::Delta([300,0,0,0,0,0]) ),
# new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
## Testing special cases of date - date = delta.
#138
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([1,-1,1,-1,1,-1]) ),
new Date::Handler({ date => [2002,01,02,11,17,43], time_zone => 'Americal/Montreal' }) );
#139
ok ( ( new Date::Handler({ date => [2001,02,03,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([-2,2,-2,2,-2,2]) ),
new Date::Handler({ date => [1999,04,01,14,14,46], time_zone => 'Americal/Montreal' }) );
#140
ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
( new Date::Handler::Delta([25,-17,0,0,40,240]) ),
new Date::Handler({ date => [2024,9,01,13,0,44], time_zone => 'Americal/Montreal' }) );
#141 Test remove due to bad rationale.
ok(1);
#ok ( ( new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) +
# ( new Date::Handler::Delta([300,0,0,0,0,0]) ),
# new Date::Handler({ date => [2301,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
# Testing special cases of date - delta = date
#142
ok ( ( new Date::Handler({ date => [2002,01,02,11,17,43], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([1,-1,1,-1,1,-1]) ),
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#143
ok ( ( new Date::Handler({ date => [1999,04,01,14,14,46], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([-2,2,-2,2,-2,2]) ),
new Date::Handler({ date => [2001,02,03,12,16,44], time_zone => 'Americal/Montreal' }) );
#144
ok ( ( new Date::Handler({ date => [2024,9,01,13,0,44], time_zone => 'Americal/Montreal' }) ) -
( new Date::Handler::Delta([25,-17,0,0,40,240]) ),
new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
#145 Test removed due to bad rationale.
ok(1);
}
=head1 NAME
Date::Handler::Test - Test module for Date::Handler
=head1 DESCRIPTION
This module provides a series of test cases to be runned during the make test of
the Date::Handler module.
=head1 SYNOPSIS
use Date::Handler::Test;
Date::Handler::Test::basic();
=head1 DESCRIPTION
This module is incomplete and a lot of effort has to be put in it to add the remaining
test cases. If you think you can help, please contact the author.
=head1 AUTHOR
Benoit Beausejour <bbeausej@pobox.com>
=head1 SEE ALSO
perl(1).
=cut
#----------------------------------- BELOW ARE STILL TO BE INTEGRATED TEST CASES
#ok ( ( new Date::Handler({ date => [2301,02,01,12,16,44], time_zone => 'Americal/Montreal' }) ) -
# ( new Date::Handler::Delta([300,0,0,0,0,0]) ),
# new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) );
# #1-2 difference of exactly one month
# ok((new Date::Handler({ date => [2001,02,01,12,16,44], time_zone => 'Americal/Montreal' }) -
# new Date::Handler({ date => [2001,01,01,12,16,44], time_zone => 'Americal/Montreal' }))->Seconds(),
# +2678400 );
# ok(new Date::Handler('moment' => 'Feb 1 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 1 12:16:44 EST 2001'),'+0:1:0:0:0:0:0');
#
# ok( new Date::Handler('moment' => 'Feb 1 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 1 12:16:44 EST 2001') ne '+0:0:4:3:0:0:0' );
#
#
# #substraction with undef. This fails.
# {
# my $diff;
#
# #3 undef - date => date ???
# $diff = eval { (undef) - new Date::Handler('moment' => 'Feb 1 12:16:44 EST 2001') } ;
# ok( $diff ,'+0:0:0:0:0:0:0');
#
# #4 date - undef => date ???
# $diff = eval { new Date::Handler('moment' => 'Feb 1 12:16:44 EST 2001') - (undef) } ;
# ok( $diff ,'+0:0:0:0:0:0:0');
# }
# #5 delta eq delta
# ok( new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') , new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
#
# #6 string eq delta
# ok( '+0:0:0:0:0:0:0', new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
#
# #7 delta eq string
# ok( new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') , '+0:0:0:0:0:0:0');
#
# {
# my $diff;
#
##Part 1: Testing date - date = delta
# #3 Testing date - date = delta 0
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), '+0:0:0:0:0:0:0');
## Testing date - date = negative deltas
# #4 Testing delta of -2 seconds
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:16:46 EST 2001'), '-0:0:0:0:0:0:2');
# #5 Testing delta of -3 minutes
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:19:44 EST 2001'), '-0:0:0:0:0:3:0');
# #6 Testing delta of -4 hours
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 16:16:44 EST 2001'), '-0:0:0:0:4:0:0');
# #7 Testing delta of -5 days
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 7 12:16:44 EST 2001'), '-0:0:0:5:0:0:0');
# #8 Testing delta of -7 months
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler('moment' => 'Aug 2 12:16:44 EST 2001'), '-0:7:0:0:0:0:0');
# #9 Testing delta of -8 years
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2009'), '-8:0:0:0:0:0:0');
#
##2 Testing date - date = positive deltas
# #16 Testing delta of +2 seconds
# ok (new Date::Handler('moment' => 'Jan 2 12:16:46 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), '+0:0:0:0:0:0:2');
# #17 Testing delta of +3 minutes
# ok (new Date::Handler('moment' => 'Jan 2 12:19:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), '+0:0:0:0:0:3:0');
# #18 Testing delta of +4 hours
# ok (new Date::Handler('moment' => 'Jan 2 16:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), '+0:0:0:0:4:0:0');
# #19 Testing delta of +5 days
# ok (new Date::Handler('moment' => 'Jan 7 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), '+0:0:0:5:0:0:0');
# #20 Testing delta of +6 weeks
# ok (new Date::Handler('moment' => 'Feb 16 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), '+0:1:2:0:0:0:0');
# #21 Testing delta of +7 months
# ok (new Date::Handler('moment' => 'Aug 2 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), '+0:7:0:0:0:0:0');
# #22 Testing delta of +8 years
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2009') - new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), '+8:0:0:0:0:0:0');
#
##3 Testing negative deltas across time spans
# #23 Testing delta of +34 seconds across two minutes
# ok (new Date::Handler('moment' => 'Jan 2 12:17:18 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), '+0:0:0:0:0:0:34');
# #24 Testing delta of +51 minutes across two hours
# ok (new Date::Handler('moment' => 'Jan 2 13:07:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), '+0:0:0:0:0:51:0');
# #25 Testing delta of +16 hours across two days
# ok (new Date::Handler('moment' => 'Jan 3 04:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), '+0:0:0:0:16:0:0');
# #26 Testing delta of 6 days across two weeks
# ok (new Date::Handler('moment' => 'Jan 8 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), '+0:0:0:6:0:0:0');
# #27 Testing delta of 3 weeks across two months)
# ok (new Date::Handler('moment' => 'Feb 18 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 28 12:16:44 EST 2001'), '+0:0:3:0:0:0:0');
# #28 Testing delta of 7 months across two years
# ok (new Date::Handler('moment' => 'Mar 2 12:16:44 EST 2002') - new Date::Handler('moment' => 'Aug 2 12:16:44 EST 2001'), '+0:7:0:0:0:0:0');
#
##4 Testing positive deltas across time spans
# #29 Testing delta of -34 seconds across two minutes
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:17:18 EST 2001'), '-0:0:0:0:0:0:34');
# #30 Testing delta of -51 minutes across two hours
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 13:07:44 EST 2001'), '-0:0:0:0:0:51:0');
# #31 Testing delta of -16 hours across two days
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 3 04:16:44 EST 2001'), '-0:0:0:0:16:0:0');
# #32 Testing delta of -6 days across two weeks
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 8 12:16:44 EST 2001'), '-0:0:0:6:0:0:0');
# #33 Testing delta of -3 weeks across two months)
# ok (new Date::Handler('moment' => 'Jan 28 12:16:44 EST 2001') - new Date::Handler('moment' => 'Feb 18 12:16:44 EST 2001'), '-0:0:3:0:0:0:0');
# #34 Testing delta of -7 months across two years
# ok (new Date::Handler('moment' => 'Aug 2 12:16:44 EST 2001') - new Date::Handler('moment' => 'Mar 2 12:16:44 EST 2002'), '-0:7:0:0:0:0:0');
#
#
##Part 2: date + delta = date
# #35 Adding delta 0 to a date
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') + new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:0'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
#
##5 Testing date + positive delta
# #36 Adding delta +2 seconds
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') + new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:2'), new Date::Handler('moment' => 'Jan 2 12:16:46 EST 2001'));
# #37 Adding delta +3 minutes
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') + new Date::Handler::Delta('delta' => '+0:0:0:0:0:3:0'), new Date::Handler('moment' => 'Jan 2 12:19:44 EST 2001'));
# #38 Adding delta +4 hours
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') + new Date::Handler::Delta('delta' => '+0:0:0:0:4:0:0'), new Date::Handler('moment' => 'Jan 2 16:16:44 EST 2001'));
# #39 Adding delta +5 days
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') + new Date::Handler::Delta('delta' => '+0:0:0:5:0:0:0'), new Date::Handler('moment' => 'Jan 7 12:16:44 EST 2001'));
# #40 Adding delta +6 weeks
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') + new Date::Handler::Delta('delta' => '+0:0:6:0:0:0:0'), new Date::Handler('moment' => 'Feb 13 12:16:44 EST 2001'));
# #41 Adding delta +7 months
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') + new Date::Handler::Delta('delta' => '+0:7:0:0:0:0:0'), new Date::Handler('moment' => 'Aug 2 12:16:44 EST 2001'));
# #42 Adding delta +8 years
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') + new Date::Handler::Delta('delta' => '+8:0:0:0:0:0:0'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2009'));
#
##6 Testing date + negative delta = date
# #43 Adding delta -2 seconds
# ok (new Date::Handler('moment' => 'Jan 2 12:16:46 EST 2001') + new Date::Handler::Delta('delta' => '-0:0:0:0:0:0:2'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# #44 Adding delta -3 minutes
# ok (new Date::Handler('moment' => 'Jan 2 12:19:44 EST 2001') + new Date::Handler::Delta('delta' => '-0:0:0:0:0:3:0'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# #45 Adding delta -4 hours
# ok (new Date::Handler('moment' => 'Jan 2 16:16:44 EST 2001') + new Date::Handler::Delta('delta' => '-0:0:0:0:4:0:0'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# #46 Adding delta -5 days
# ok (new Date::Handler('moment' => 'Jan 7 12:16:44 EST 2001') + new Date::Handler::Delta('delta' => '-0:0:0:5:0:0:0'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# #47 Adding delta -6 weeks
# ok (new Date::Handler('moment' => 'Feb 13 12:16:44 EST 2001') + new Date::Handler::Delta('delta' => '-0:0:6:0:0:0:0'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# #48 Adding delta -7 months
# ok (new Date::Handler('moment' => 'Aug 2 12:16:44 EST 2001') + new Date::Handler::Delta('delta' => '-0:7:0:0:0:0:0'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# #49 Adding delta -8 years
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2009') + new Date::Handler::Delta('delta' => '-8:0:0:0:0:0:0'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
#
##7 Testing positive delta + date = date
# #50 Adding delta +2 seconds
# ok (new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:2') + new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), new Date::Handler('moment' => 'Jan 2 12:16:46 EST 2001'));
# #51 Adding delta +3 minutes
# ok (new Date::Handler::Delta('delta' => '+0:0:0:0:0:3:0') + new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), new Date::Handler('moment' => 'Jan 2 12:19:44 EST 2001'));
# #52 Adding delta +4 hours
# ok (new Date::Handler::Delta('delta' => '+0:0:0:0:4:0:0') + new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), new Date::Handler('moment' => 'Jan 2 16:16:44 EST 2001'));
# #53 Adding delta +5 days
# ok (new Date::Handler::Delta('delta' => '+0:0:0:5:0:0:0') + new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), new Date::Handler('moment' => 'Jan 7 12:16:44 EST 2001'));
# #54 Adding delta +6 weeks
# ok (new Date::Handler::Delta('delta' => '+0:0:6:0:0:0:0') + new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), new Date::Handler('moment' => 'Feb 13 12:16:44 EST 2001'));
# #55 Adding delta +7 months
# ok (new Date::Handler::Delta('delta' => '+0:7:0:0:0:0:0') + new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), new Date::Handler('moment' => 'Aug 2 12:16:44 EST 2001'));
# #56 Adding delta +8 years
# ok (new Date::Handler::Delta('delta' => '+8:0:0:0:0:0:0') + new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2009'));
#
##8 Testing negative delta + date = date
# #57 Adding delta -2 seconds
# ok (new Date::Handler::Delta('delta' => '-0:0:0:0:0:0:2') + new Date::Handler('moment' => 'Jan 2 12:16:46 EST 2001'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# #58 Adding delta -3 minutes
# ok (new Date::Handler::Delta('delta' => '-0:0:0:0:0:3:0') + new Date::Handler('moment' => 'Jan 2 12:19:44 EST 2001'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# #59 Adding delta -4 hours
# ok (new Date::Handler::Delta('delta' => '-0:0:0:0:4:0:0') + new Date::Handler('moment' => 'Jan 2 16:16:44 EST 2001'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# #60 Adding delta -5 days
# ok (new Date::Handler::Delta('delta' => '-0:0:0:5:0:0:0') + new Date::Handler('moment' => 'Jan 7 12:16:44 EST 2001'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# #61 Adding delta -6 weeks
# ok (new Date::Handler::Delta('delta' => '-0:0:6:0:0:0:0') + new Date::Handler('moment' => 'Feb 13 12:16:44 EST 2001'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# #62 Adding delta -7 months
# ok (new Date::Handler::Delta('delta' => '-0:7:0:0:0:0:0') + new Date::Handler('moment' => 'Aug 2 12:16:44 EST 2001'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# #63 Adding delta -8 years
# ok (new Date::Handler::Delta('delta' => '-8:0:0:0:0:0:0') + new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2009'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
#
##9 Testing adding multiple deltas to one date
# #64 delta + delta + date
# ok (new Date::Handler::Delta('delta' => '+8:0:6:0:4:0:2') + new Date::Handler::Delta('delta' => '+0:7:0:5:0:3:0') + new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), new Date::Handler('moment' => 'Sep 18 16:19:46 EST 2009'));
# #65 date + delta + delta
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') + new Date::Handler::Delta('delta' => '+8:0:6:0:4:0:2') + new Date::Handler::Delta('delta' => '+0:7:0:5:0:3:0'), new Date::Handler('moment' => 'Sep 18 16:19:46 EST 2009'));
# #66 delta + date + delta
# ok (new Date::Handler::Delta('delta' => '+0:7:0:5:0:3:0') + new Date::Handler::Delta('delta' => '+8:0:6:0:4:0:2') + new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), new Date::Handler('moment' => 'Sep 18 16:19:46 EST 2009'));
#
#
##Part 3: delta + delta = delta
##10 Testing delta 0
# #67 delta 0 + delta 0 = delta 0
# ok (new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:0') + new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:0'), '+0:0:0:0:0:0:0');
# #68 delta 0 + delta A = delta A
# ok (new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:0') + new Date::Handler::Delta('delta' => '+8:7:6:5:4:3:2'), '+8:7:6:5:4:3:2');
# #69 delta A + delta 0 = delta A
# ok (new Date::Handler::Delta('delta' => '+8:7:6:5:4:3:2') + new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:0'), '+8:7:6:5:4:3:2');
##11 Testing addition
# #70 delta A + delta B = delta C
# ok (new Date::Handler::Delta('delta' => '+8:0:6:0:4:0:2') + new Date::Handler::Delta('delta' => '+0:7:0:5:0:3:0'), '+8:7:6:5:4:3:2');
# #71 delta B + delta A = delta C
# ok (new Date::Handler::Delta('delta' => '+0:7:0:5:0:3:0') + new Date::Handler::Delta('delta' => '+8:0:6:0:4:0:2'), '+8:7:6:5:4:3:2');
##12 Testing addition of a large delta to a large delta
# #72 large delta + large delta = incorrect large delta
# ok (!(new Date::Handler::Delta('delta' => '+12:23:34:45:56:67:78') + new Date::Handler::Delta('delta' => '+23:34:45:56:67:78:89') eq '+35:57:69:101:123:145:167'));
# #73 large delta + large delta = correct large delta
# ok (new Date::Handler::Delta('delta' => '+12:23:34:45:56:67:78') + new Date::Handler::Delta('delta' => '+23:34:45:56:67:78:89'), '+39:9:94:1:5:27:47');
##13 Testing the addition of a large delta to a date
# #74 delta + date
# ok (new Date::Handler::Delta('delta' => '+39:9:94:1:5:27:47') + new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), new Date::Handler('moment' => 'Jul 23 17:44:31 EST 2042'));
# #75 date + delta
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') + new Date::Handler::Delta('delta' => '+39:9:94:1:5:27:47'), new Date::Handler('moment' => 'Jul 23 17:44:31 EST 2042'));
# #$diff = eval {new Date::Handler::Delta('delta' => '39:9:26:1:5:27:47') + new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001')};
# #print STDERR Dumper $diff;
#
##Part 4: delta - delta = delta
##14 Testing delta 0
# #76 delta 0 - delta 0 = delta 0
# ok (new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:0') - new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:0'), '+0:0:0:0:0:0:0');
# #77 delta 0 - delta A = delta -A
# ok (new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:0') - new Date::Handler::Delta('delta' => '+8:7:6:5:4:3:2'), '-8:7:6:5:4:3:2');
# #78 delta A - delta 0 = delta A
# ok (new Date::Handler::Delta('delta' => '+8:7:6:5:4:3:2') - new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:0'), '+8:7:6:5:4:3:2');
##15 Testing substraction of a delta from a delta
# #79 delta A - delta B = a positive delta
# ok (new Date::Handler::Delta('delta' => '+8:7:6:5:4:3:2') - new Date::Handler::Delta('delta' => '+7:6:5:4:3:2:1'), '+1:1:1:1:1:1:1');
# #80 delta B - delta A = a negative delta
# ok (new Date::Handler::Delta('delta' => '+7:6:5:4:3:2:1') - new Date::Handler::Delta('delta' => '+8:7:6:5:4:3:2'), '-1:1:1:1:1:1:1');
##16 Testing substraction of a large delta from a large delta
# #81 large delta - large delta = incorrect large delta
# ok (!(new Date::Handler::Delta('delta' => '+12:23:34:45:56:67:78') - new Date::Handler::Delta('delta' => '+23:34:45:56:67:78:89') eq '-35:57:69:101:123:145:167'));
# #82 large delta - large delta = correct large delta
# ok (new Date::Handler::Delta('delta' => '+12:23:34:45:56:67:78') - new Date::Handler::Delta('delta' => '+23:34:45:56:67:78:89'), '-11:11:12:4:11:11:11');
##17 Testing the substraction of a large delta to a date
# #83 date - delta
# ok (new Date::Handler('moment' => 'Jul 23 17:44:31 EST 2042') - new Date::Handler::Delta('delta' => '+39:9:94:1:5:27:47'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# #84 delta - date
# #ok (new Date::Handler::Delta('delta' => '+39:9:94:1:5:27:47') - new Date::Handler('moment' => 'Jul 23 17:44:31 EST 2042'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# ok (1,1);
#
##Part 5: testing delta -0 (should be the same as delta 0)
##18 Testing delta -0 added to delta
# #85 delta 0 + delta -0 = delta 0
# ok (new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:0') + new Date::Handler::Delta('delta' => '-0:0:0:0:0:0:0'), '+0:0:0:0:0:0:0');
# #86 delta -0 + delta 0 = delta 0
# ok (new Date::Handler::Delta('delta' => '-0:0:0:0:0:0:0') + new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:0'), '+0:0:0:0:0:0:0');
# #87 delta -0 + delta -0 = delta 0
# ok (new Date::Handler::Delta('delta' => '-0:0:0:0:0:0:0') + new Date::Handler::Delta('delta' => '-0:0:0:0:0:0:0'), '+0:0:0:0:0:0:0');
# #88 delta -0 + delta A = delta A
# ok (new Date::Handler::Delta('delta' => '-0:0:0:0:0:0:0') + new Date::Handler::Delta('delta' => '+8:7:6:5:4:3:2'), '+8:7:6:5:4:3:2');
# #89 delta A + delta -0 = delta A
# ok (new Date::Handler::Delta('delta' => '+8:7:6:5:4:3:2') + new Date::Handler::Delta('delta' => '-0:0:0:0:0:0:0'), '+8:7:6:5:4:3:2');
##19 Testing delta -0 in substracted from delta
# #90 delta 0 - delta -0 = delta 0
# ok (new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:0') - new Date::Handler::Delta('delta' => '-0:0:0:0:0:0:0'), '+0:0:0:0:0:0:0');
# #91 delta -0 - delta 0 = delta 0
# ok (new Date::Handler::Delta('delta' => '-0:0:0:0:0:0:0') - new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:0'), '+0:0:0:0:0:0:0');
# #92 delta -0 - delta -0 = delta 0
# ok (new Date::Handler::Delta('delta' => '-0:0:0:0:0:0:0') - new Date::Handler::Delta('delta' => '-0:0:0:0:0:0:0'), '+0:0:0:0:0:0:0');
# #93 delta -0 - delta A = delta -A
# ok (new Date::Handler::Delta('delta' => '-0:0:0:0:0:0:0') - new Date::Handler::Delta('delta' => '+8:7:6:5:4:3:2'), '-8:7:6:5:4:3:2');
# #94 delta A - delta -0 = delta A
# ok (new Date::Handler::Delta('delta' => '+8:7:6:5:4:3:2') - new Date::Handler::Delta('delta' => '-0:0:0:0:0:0:0'), '+8:7:6:5:4:3:2');
#
##Part 6: Testing substraction of a delta to a date
##20 Testing date - negative delta = date
# #95 Adding delta +2 seconds
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler::Delta('delta' => '-0:0:0:0:0:0:2'), new Date::Handler('moment' => 'Jan 2 12:16:46 EST 2001'));
# #96 Adding delta +3 minutes
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler::Delta('delta' => '-0:0:0:0:0:3:0'), new Date::Handler('moment' => 'Jan 2 12:19:44 EST 2001'));
# #97 Adding delta +4 hours
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler::Delta('delta' => '-0:0:0:0:4:0:0'), new Date::Handler('moment' => 'Jan 2 16:16:44 EST 2001'));
# #98 Adding delta +5 days
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler::Delta('delta' => '-0:0:0:5:0:0:0'), new Date::Handler('moment' => 'Jan 7 12:16:44 EST 2001'));
# #99 Adding delta +6 weeks
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler::Delta('delta' => '-0:0:6:0:0:0:0'), new Date::Handler('moment' => 'Feb 13 12:16:44 EST 2001'));
# #100 Adding delta +7 months
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler::Delta('delta' => '-0:7:0:0:0:0:0'), new Date::Handler('moment' => 'Aug 2 12:16:44 EST 2001'));
# #101 Adding delta +8 years
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler::Delta('delta' => '-8:0:0:0:0:0:0'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2009'));
##21 Testing date - positive delta + date = date
# #102 Substracting delta 2 seconds
# ok (new Date::Handler('moment' => 'Jan 2 12:16:46 EST 2001') - new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:2'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# #103 Substracting delta 3 minutes
# ok (new Date::Handler('moment' => 'Jan 2 12:19:44 EST 2001') - new Date::Handler::Delta('delta' => '+0:0:0:0:0:3:0'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# #104 Substracting delta 4 hours
# ok (new Date::Handler('moment' => 'Jan 2 16:16:44 EST 2001') - new Date::Handler::Delta('delta' => '+0:0:0:0:4:0:0'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# #105 Substracting delta 5 days
# ok (new Date::Handler('moment' => 'Jan 7 12:16:44 EST 2001') - new Date::Handler::Delta('delta' => '+0:0:0:5:0:0:0'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# #106 Substracting delta 6 weeks
# ok (new Date::Handler('moment' => 'Feb 13 12:16:44 EST 2001') - new Date::Handler::Delta('delta' => '+0:0:6:0:0:0:0'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# #107 Substracting delta 7 months
# ok (new Date::Handler('moment' => 'Aug 2 12:16:44 EST 2001') - new Date::Handler::Delta('delta' => '+0:7:0:0:0:0:0'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
# #108 Substracting delta 8 years
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2009') - new Date::Handler::Delta('delta' => '+8:0:0:0:0:0:0'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
#
#
##Part 7: delta * (+|-)n = (delta + delta [...n])
# #109 delta 0 * n = delta 0
# ok (new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:0') * 5, '+0:0:0:0:0:0:0');
# #110 delta A * n = delta 5A
# ok (new Date::Handler::Delta('delta' => '+1:1:1:1:1:1:1') * 5, '+5:5:5:5:5:5:5');
# #111 n * delta 0 = delta 5A
# ok (5 * new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:0'), '+0:0:0:0:0:0:0');
# #112 n * delta A = delta 5A
# ok (5 * new Date::Handler::Delta('delta' => '+1:1:1:1:1:1:1'), '+5:5:5:5:5:5:5');
# #113 large delta A * n = delta 5A
# ok (new Date::Handler::Delta('delta' => '+1:3:1:2:5:11:11') * 6, '+7:6:7:6:7:7:6');
# #114 delta A * 1 = delta A
# ok (new Date::Handler::Delta('delta' => '+8:7:6:5:4:3:2') * 1, '+8:7:6:5:4:3:2');
# #115 delta A * 0 = delta 0
# ok (new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:0') * 0, '+0:0:0:0:0:0:0');
# #116 delta A * -1 = delta -A
# ok (new Date::Handler::Delta('delta' => '+8:7:6:5:4:3:2') * -1, '-8:7:6:5:4:3:2');
# #117 delta A * 2.6 = delta
# ok (new Date::Handler::Delta('delta' => '8:7:6:5:4:3:2:') * 2.6, '+17:2:13:3:8:6:4');
#
##Part 8: tests that should fail:
# #118 This invalid date is created and incorrectly parsed.
# #ok (new Date::Handler('moment' => 'Feb 29 12:16:44 EST 2001'), (undef));
# #119 This invalid object is created.
# #ok (new Date::Handler('moment' => 'dcftyg uhijok tfyvybgunhjimftvy km'), (undef));
#
# #my $d = new Date::Handler('moment' => 'Feb 29 12:16:44 EST 2001');
# #my $e = new Date::Handler('moment' => 'Jan 44 12:16:44 EST 2001');
# #print STDERR Dumper $d, $e;
#
# #120 Testing adding dates
# #ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') + new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'), '40020204121644');
#
# #Testing date formats that go over the logical bounds of time periods
# #121 What 84 seconds minus 40 seconds?
# #ok (new Date::Handler('moment' => 'Jan 2 12:16:84 EST 2001') - new Date::Handler::Delta('delta' => '+0:0:0:0:0:0:40'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001'));
#
#
#
#} # END OF TEST CASES
#
# }
#}
#
#sub leap_years {
# plan tests => 4;
##Part 6: Leap year (the year is a leap year)
# #1
# ok (new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001') - new Date::Handler::Delta('delta' => '+1:0:0:0:0:0:0'), new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2000'));
# #2
# ok (new Date::Handler('moment' => 'Mar 2 12:16:44 EST 2001') - new Date::Handler::Delta('delta' => '+0:1:0:0:0:0:0'), new Date::Handler('moment' => 'Feb 2 12:16:44 EST 2001'));
# #3
# ok (new Date::Handler('moment' => 'Mar 1 12:16:44 EST 2001') - new Date::Handler::Delta('delta' => '+0:0:0:1:0:0:0'), new Date::Handler('moment' => 'Feb 28 12:16:44 EST 2001'));
# #4
# ok (new Date::Handler('moment' => 'Mar 1 12:16:44 EST 2000') - new Date::Handler::Delta('delta' => '+0:0:0:1:0:0:0'), new Date::Handler('moment' => 'Feb 29 12:16:44 EST 2000'));
#
#
# #$diff = eval { new Date::Handler('moment' => 'Feb 28 12:16:44 EST 2001') - new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001')};
# #$diff = eval {new Date::Handler('moment' => 'Jan 2 12:16:44 EST 2001')};
# #print STDERR Dumper $diff;
#
#}
#
## Preloaded methods go here.
#
## Autoload methods go after =cut, and are processed by the autosplit program.
#
#1;
sub deltas
{
plan tests => 25;
#1
my $date = Date::Handler->new({ date => [2001,11,25,00,00] });
my $delta = Date::Handler::Delta->new([00,00,07,00,00,00]);
my $cdate = Date::Handler->new({ date => [2001,12,02,00,00]});
ok($date + $delta, Date::Handler->new({ date => [2001,12,02,00,00]}));
#2 - 13
$delta = Date::Handler::Delta->new([00,01,00,00,00,00]);
for(1..12)
{
my $date = Date::Handler->new({ date => [2001,$_,01,00,00] });
my $cdate = Date::Handler->new({ date => [2001,$_+1, 01,00,00] });
ok($date + $delta, $cdate);
}
my $count = 13;
for (1..12)
{
$count = $count - $_;
my $date = Date::Handler->new({ date => [2005,$count,01,00,00] });
my $cdate = Date::Handler->new({ date => [2005,$count-1, 01,00,00] });
ok($date - $delta, $cdate);
}
}
sub ranges
{
plan tests => 4;
my $date = Date::Handler->new({ date => [2001,01,05,1,0,0], time_zone => 'America/Montreal' });
my $delta = Date::Handler::Delta->new([0,0,2,0,0,0]);
my $range = Date::Handler::Range->new({ date => $date, delta => $delta, });
ok($range->EndDate(),$date + $delta);
ok($range->StartDate(), $date);
$range->Direction('BACKWARDS');
ok($range->StartDate(),$date - $delta);
ok($range->EndDate(), $date);
}
sub locale
{
plan tests => 2;
my $date = Date::Handler->new({ date => [2001,8,29,1,0,0], time_zone => 'America/Montreal' });
my $day_english = $date->WeekDayName();
$date->SetLocale('french');
my $day_french = $date->WeekDayName();
ok(lc $day_french, lc "Mercredi");
$date->SetLocale('spanish');
my $day_spanish = $date->WeekDayName();
ok(lc $day_spanish, lc "miércoles");
}
sub IntuitiveMonths
{
plan tests => 8;
my $date = Date::Handler::Tester->new({ date => [2002,01,30,5,0,0], time_zone => 'America/Montreal', })
;
my $onemonth = Date::Handler::Delta->new([0,1,0,0,0,0]);
my $oneweek = Date::Handler::Delta->new([0,0,7,0,0,0]);
my $twomonths = Date::Handler::Delta->new([0,2,0,0,0,0]);
my $cdate1 = Date::Handler::Tester->new({
date => [2002,02,28,5,0,0],
time_zone => 'America/Montreal',
});
my $cdate2 = Date::Handler::Tester->new({
date => [2002,03,30,5,0,0],
time_zone => 'America/Montreal',
});
my $cdate3 = Date::Handler::Tester->new({
date => [2002,03,31, 5,0,0],
time_zone => 'America/Montreal',
});
my $cdate4 = Date::Handler::Tester->new({
date => [2002,03,30, 5,0,0],
time_zone => 'America/Montreal',
});
ok( ($date + $onemonth), $cdate1);
ok( ($date + $onemonth) + $onemonth, $cdate2);
ok( ($date + (2 * $onemonth)), $cdate2);
ok( ($date + ($twomonths)), $cdate2);
my $date2 = Date::Handler::Tester->new({ date => [2001,12,31,5,0,0], time_zone => 'America/Montreal',})
;
ok( ($date2 + $onemonth + $onemonth + $onemonth), $cdate3);
my $date3 = Date::Handler::Tester->new({ date => [2002,02,28,5,0,0], time_zone => 'America/Montreal',
intuitive_day => 30, });
ok( ($date3 + $onemonth), $cdate4);
my $date4 = Date::Handler::Tester->new({ date => [2000,1,1,6,0,0], time_zone => 'America/Montreal'});
for(1..24)
{
$date4 += $onemonth;
}
ok($date4, Date::Handler->new({ date => [2002,1,1,6,0,0], time_zone => 'America/Montreal'}));
for(1..8)
{
$date4 += $oneweek;
}
ok($date4, Date::Handler->new({date =>[2002,2,26,6,0,0], time_zone => 'America/Montreal'}));
}
sub StandardMonths
{
plan tests => 5;
my $date = Date::Handler->new({ date => [2002,01,30,5,0,0], time_zone => 'America/Montreal', })
;
my $onemonth = Date::Handler::Delta->new([0,1,0,0,0,0]);
my $twomonths = Date::Handler::Delta->new([0,2,0,0,0,0]);
my $cdate1 = Date::Handler->new({
date => [2002,03,02,5,0,0],
time_zone => 'America/Montreal',
});
my $cdate2 = Date::Handler->new({
date => [2002,04,03,5,0,0],
time_zone => 'America/Montreal',
});
my $cdate3 = Date::Handler->new({
date => [2002,04,02, 5,0,0],
time_zone => 'America/Montreal',
});
my $cdate4 = Date::Handler->new({
date => [2002,03,30, 5,0,0],
time_zone => 'America/Montreal',
});
ok( ($date + $onemonth), $cdate1);
ok( ($date + $onemonth) + $onemonth, $cdate3);
ok( ($date + (2 * $onemonth)), $cdate4);
ok( ($date + ($twomonths)), $cdate4);
my $date2 = Date::Handler->new({ date => [2001,12,31,5,0,0], time_zone => 'America/Montreal',})
;
ok( ($date2 + $onemonth + $onemonth + $onemonth), $cdate2);
}
sub IntuitiveDSTTime
{
plan tests => 7;
my $date = Date::Handler::Tester->new({ date => [2002,04,06,1,0,0], time_zone => 'America/Montreal', });
my $oneday = Date::Handler::Delta->new([0,0,1,0,0,0]);
my $date1 = Date::Handler::Tester->new({ date => [2002,4,07,1,0,0], time_zone => 'America/Montreal', });
my $date2 = Date::Handler::Tester->new({ date => [2002,4,06,2,0,0], time_zone => 'America/Montreal', });
my $date3 = Date::Handler::Tester->new({ date => [2002,4,07,3,0,0], time_zone => 'America/Montreal', });
my $date4 = Date::Handler::Tester->new({ date => [2002,4,8,2,0,0], time_zone => 'America/Montreal', });
ok($date + $oneday, $date1);
ok($date2 + $oneday, $date3);
ok($date2 + $oneday + $oneday, $date4);
my $date5 = Date::Handler::Tester->new({ date => [2002,10,26,1,0,0], time_zone => 'America/Montreal',});
my $date6 = Date::Handler::Tester->new({ date => [2002,10,27,1,0,0], time_zone => 'America/Montreal', });
my $date7 = Date::Handler::Tester->new({ date => [2002,10,28,1,0,0], time_zone => 'America/Montreal', });
my $date8 = Date::Handler::Tester->new({ date => [2002,10,26,0,0,0], time_zone => 'America/Montreal', });
my $date9 = Date::Handler::Tester->new({ date => [2002,10,27,0,0,0], time_zone => 'America/Montreal', });
my $date10 = Date::Handler::Tester->new({ date => [2002,10,28,0,0,0], time_zone => 'America/Montreal', });
ok($date5 + $oneday, $date6);
ok($date5 + $oneday + $oneday, $date7);
ok($date8 + $oneday, $date9);
ok($date8 + $oneday + $oneday, $date10);
}
sub SkipTest
{
print "1..0\n";
exit;
}
sub LoadTestConfig
{
my $config_str;
open(CONFIG, "t/config") || die "Cannot open t/config: $!";
while(<CONFIG>) { $config_str .= $_; }
close CONFIG;
my $test_config = eval $config_str;
return $test_config;
}
1;
package Date::Handler::Tester;
use strict;
use base qw(Date::Handler);
use constant INTUITIVE_MONTH_CALCULATIONS => 1;
use constant INTUITIVE_TIME_CALCULATIONS => 1;
use constant INTUITIVE_DST_ADJUSTMENTS => 1;
1;
__END__
syntax highlighted by Code2HTML, v. 0.9.1