1#!/usr/bin/perl 2 3use warnings; 4use strict; 5use Test::Inter; 6$::ti = new Test::Inter $0; 7require "tests.pl"; 8 9our $obj1 = new Date::Manip::Date; 10$obj1->config("forcedate","now,America/New_York"); 11our $obj2 = $obj1->new_delta(); 12 13sub test { 14 my(@test)=@_; 15 16 my $err = $obj1->parse(shift(@test)); 17 return $$obj1{"err"} if ($err); 18 $err = $obj2->parse(shift(@test)); 19 return $$obj2{"err"} if ($err); 20 21 my $obj3 = $obj1->calc($obj2,@test); 22 return if (! defined $obj3); 23 $err = $obj3->err(); 24 return $err if ($err); 25 my $ret = $obj3->value(); 26 return $ret; 27} 28 29my $tests=" 30 31'1996-02-07 08:00' +1:1:1:1 0 => 1996020809:01:01 32 33'1996-02-07 08:00' +1:1:1:1 1 => 1996020606:58:59 34 35'1996-02-07 08:00' +1:1:1:1 2 => 1996020606:58:59 36 37'1996-11-20 12:00:00' +0:5:0:0 0 => 1996112017:00:00 38 39'1996-11-20 12:00:00' +0:5:0:0 1 => 1996112007:00:00 40 41'1996-11-20 12:00:00' +0:5:0:0 2 => 1996112007:00:00 42 43'1996-11-20 12:00:00' +0:13:0:0 0 => 1996112101:00:00 44 45'1996-11-20 12:00:00' +0:13:0:0 1 => 1996111923:00:00 46 47'1996-11-20 12:00:00' +0:13:0:0 2 => 1996111923:00:00 48 49'1996-11-20 12:00:00' +3:2:0:0 0 => 1996112314:00:00 50 51'1996-11-20 12:00:00' +3:2:0:0 1 => 1996111710:00:00 52 53'1996-11-20 12:00:00' +3:2:0:0 2 => 1996111710:00:00 54 55'1996-11-20 12:00:00' -3:2:0:0 0 => 1996111710:00:00 56 57'1996-11-20 12:00:00' -3:2:0:0 1 => 1996112314:00:00 58 59'1996-11-20 12:00:00' -3:2:0:0 2 => 1996112314:00:00 60 61'1996-11-20 12:00:00' +3:13:0:0 0 => 1996112401:00:00 62 63'1996-11-20 12:00:00' +3:13:0:0 1 => 1996111623:00:00 64 65'1996-11-20 12:00:00' +3:13:0:0 2 => 1996111623:00:00 66 67'1996-11-20 12:00:00' +6:2:0:0 0 => 1996112614:00:00 68 69'1996-11-20 12:00:00' +6:2:0:0 1 => 1996111410:00:00 70 71'1996-11-20 12:00:00' +6:2:0:0 2 => 1996111410:00:00 72 73'1996-12-31 12:00:00' +1:2:0:0 0 => 1997010114:00:00 74 75'2009-05-13 12:00:00' '+10 weeks' 0 => 2009072212:00:00 76 77'2009-05-13 12:00:00' '+10 weeks' 1 => 2009030412:00:00 78 79'2009-05-13 12:00:00' '+10 weeks' 2 => 2009030412:00:00 80 81'2009-05-13 12:00:00' '-10 weeks' 0 => 2009030412:00:00 82 83'2009-05-13 12:00:00' '-10 weeks' 1 => 2009072212:00:00 84 85'2009-05-13 12:00:00' '-10 weeks' 2 => 2009072212:00:00 86 87# Approximate deltas 88 89'2009-05-13 12:00:00' '+ 1 year' 0 => 2010051312:00:00 90 91'2009-05-13 12:00:00' '+ 1 year' 1 => 2008051312:00:00 92 93'2009-05-13 12:00:00' '+ 1 year' 2 => 2008051312:00:00 94 952008022912:00:00 '+ 1 year' 0 => 2009022812:00:00 96 97'2009-05-13 12:00:00' '+ 13 months' 0 => 2010061312:00:00 98 99'2009-05-13 12:00:00' '+ 13 months' 1 => 2008041312:00:00 100 101'2009-05-13 12:00:00' '+ 13 months' 2 => 2008041312:00:00 102 103# Handle subtraction 104 105'1998-11-28 00:00:00' 1:1:1:0:0:0:0 0 => 2000010400:00:00 106 107'1998-11-28 00:00:00' 1:1:1:0:0:0:0 1 => 1997102100:00:00 108 109'1998-11-28 00:00:00' 1:1:1:0:0:0:0 2 => 1997102100:00:00 110 111'1999-01-04 00:00:00' 0:1:1:0:0:0:0 0 => 1999021100:00:00 112 113'1999-01-04 00:00:00' 0:1:1:0:0:0:0 1 => 1998112700:00:00 114 115'1999-01-04 00:00:00' 0:1:1:0:0:0:0 2 => 1998112800:00:00 116 1171998112800:00:00 -0:1:1:0:0:0:0 0 => 1998102100:00:00 118 1191998112800:00:00 -0:1:1:0:0:0:0 1 => 1999010400:00:00 120 1211998112800:00:00 -0:1:1:0:0:0:0 2 => 1999010500:00:00 122 123# Handle large deltas 124 125'2000-01-01 00:00:00' 1:1:1:0:11111111:0:0 0 => 3268082623:00:00 126 127'2000-01-01 00:00:00' -1:1:1:0:11111111:0:0 0 => 0731050801:00:00 128 129'2000-01-01 00:00:00' 1:1:1:0:-11111111:0:0 0 => 0733072301:00:00 130 131'2000-01-01 00:00:00' 1:1:1:0:11111111:0:0 1 => 0731050801:00:00 132 133'2000-01-01 00:00:00' -1:1:1:0:11111111:0:0 1 => 3268082623:00:00 134 135'2000-01-01 00:00:00' 1:1:1:0:-11111111:0:0 1 => 3266061123:00:00 136 137'2000-01-01 00:00:00' 1:1:1:0:11111111:0:0 2 => 0731050701:00:00 138 139'2000-01-01 00:00:00' -1:1:1:0:11111111:0:0 2 => 3268082623:00:00 140 141'2000-01-01 00:00:00' 1:1:1:0:-11111111:0:0 2 => 3266061223:00:00 142 143'1996-02-29 00:00:00' 1:1:1:0:11111111:0:0 0 => 3264102123:00:00 144 145'1996-02-29 00:00:00' -1:1:1:0:11111111:0:0 0 => 0727070601:00:00 146 147'1996-02-29 00:00:00' 1:1:1:0:-11111111:0:0 0 => 0729091701:00:00 148 149'1996-02-29 00:00:00' 1:1:1:0:11111111:0:0 1 => 0727070601:00:00 150 151'1996-02-29 00:00:00' -1:1:1:0:11111111:0:0 1 => 3264102123:00:00 152 153'1996-02-29 00:00:00' 1:1:1:0:-11111111:0:0 1 => 3262080923:00:00 154 155'1996-02-29 00:00:00' 1:1:1:0:11111111:0:0 2 => 0727070501:00:00 156 157'1996-02-29 00:00:00' -1:1:1:0:11111111:0:0 2 => 3264102323:00:00 158 159'1996-02-29 00:00:00' 1:1:1:0:-11111111:0:0 2 => 3262080923:00:00 160 161'2000-01-01 00:00:00' 1:1:1:0:11111111111:0:0 0 => '[calc] Delta too large' 162 163"; 164 165$::ti->tests(func => \&test, 166 tests => $tests); 167$::ti->done_testing(); 168 169#Local Variables: 170#mode: cperl 171#indent-tabs-mode: nil 172#cperl-indent-level: 3 173#cperl-continued-statement-offset: 2 174#cperl-continued-brace-offset: 0 175#cperl-brace-offset: 0 176#cperl-brace-imaginary-offset: 0 177#cperl-label-offset: 0 178#End: 179