1#!/usr/bin/perl 2 3use warnings; 4use strict; 5use Test::Inter; 6$::ti = new Test::Inter $0; 7require "tests.pl"; 8 9my $obj = new Date::Manip::Recur; 10$obj->config("forcedate","2000-01-21-00:00:00,America/New_York"); 11 12sub test { 13 my ($op,$arg) = @_; 14 my ($date,$err); 15 16 if ($op eq 'freq') { 17 $err = $obj->frequency($arg); 18 return $obj->err() if ($err); 19 return 0; 20 21 } elsif ($op eq 'basedate') { 22 $err = $obj->basedate($arg); 23 return $obj->err() if ($err); 24 return 0; 25 26 } elsif ($op eq 'start') { 27 $err = $obj->start($arg); 28 return $obj->err() if ($err); 29 return 0; 30 31 } elsif ($op eq 'end') { 32 $err = $obj->end($arg); 33 return $obj->err() if ($err); 34 return 0; 35 36 } elsif ($op eq 'next') { 37 ($date,$err) = $obj->next($arg); 38 return $err if ($err); 39 return $date if (! defined($date)); 40 my $val = $date->value(); 41 return $val; 42 43 } elsif ($op eq 'prev') { 44 ($date,$err) = $obj->prev($arg); 45 return $err if ($err); 46 return $date if (! defined($date)); 47 my $val = $date->value(); 48 return $val; 49 50 } elsif ($op eq 'nth') { 51 ($date,$err) = $obj->nth($arg); 52 return $err if ($err); 53 return $date if (! defined($date)); 54 my $val = $date->value(); 55 return $val; 56 } 57} 58 59my $tests=" 60 61freq 1*2:0:4:12:0:0 => 0 62 63basedate 1999-12-30-00:00:00 => 0 64 65nth 0 => 1999020412:00:00 66 67nth 2 => 2001020412:00:00 68 69nth -2 => 1997020412:00:00 70 71# 31st of every month 72 73freq 0:1*0:31:12:0:0 => 0 74 75basedate 2005-01-27-00:00:00 => 0 76 77nth 0 => 2005013112:00:00 78 79nth 1 => __undef__ 80 81nth 2 => 2005033112:00:00 82 83nth -1 => 2004123112:00:00 84 85# d=15--15 86 87freq 0:1*0:15--15:12:0:0 => 0 88 89basedate 2005-01-27-00:00:00 => 0 90 91nth 0 => 2005011512:00:00 92 93nth 1 => 2005011612:00:00 94 95nth 2 => 2005011712:00:00 96 97nth 3 => 2005031512:00:00 98 99# DST transition dates 100 101freq 0:0:0:0:1*30:0 => 0 102 103basedate 2010-03-14-00:00:01 => 0 104 105nth 0 => 2010031400:30:00 106 107nth 1 => 2010031401:30:00 108 109nth 2 => 2010031403:30:00 110 111freq 0:0:0:0:1*30:0 => 0 112 113basedate 2010-11-07-00:00:01 => 0 114 115nth 0 => 2010110700:30:00 116 117nth 1 => 2010110701:30:00 118 119nth 1 => 2010110701:30:00 120 121freq 0:0:0:1*02:30:00 => 0 122 123basedate 2010-03-13-00:00:00 => 0 124 125nth 0 => 2010031302:30:00 126 127nth 1 => __undef__ 128 129nth 2 => 2010031502:30:00 130 131freq *2010:1:0:4-5:12-13:0:0 => 0 132 133nth 0 => 2010010412:00:00 134 135nth 1 => 2010010413:00:00 136 137nth 2 => 2010010512:00:00 138 139nth 3 => 2010010513:00:00 140 141nth -1 => __undef__ 142 143nth 4 => __undef__ 144 145freq *2010:1-4:0:31:12:0:0 => 0 146 147nth 0 => 2010013112:00:00 148 149nth 1 => 2010033112:00:00 150 151nth 2 => __undef__ 152 153nth -1 => __undef__ 154 155freq *2010:1-4:0:31:12:0:0 => 0 156 157next => 2010013112:00:00 158 159next => 2010033112:00:00 160 161next => __undef__ 162 163prev => 2010033112:00:00 164 165prev => 2010013112:00:00 166 167prev => __undef__ 168 169freq *2010:1-4:0:31:12:0:0 => 0 170 171prev => 2010033112:00:00 172 173prev => 2010013112:00:00 174 175prev => __undef__ 176 177freq 0:1*0:31:12:0:0 => 0 178 179basedate 2005-01-27-00:00:00 => 0 180 181next => 2005013112:00:00 182 183next => 2005033112:00:00 184 185prev => 2005013112:00:00 186 187freq 0:1*0:31:12:0:0 => 0 188 189basedate 2005-01-27-00:00:00 => 0 190 191prev => 2004123112:00:00 192 193freq 0:1*0:31:12:0:0 => 0 194 195basedate 2005-02-27-00:00:00 => 0 196 197next => 2005033112:00:00 198 199freq 0:1*0:31:12:0:0 => 0 200 201basedate 2005-02-27-00:00:00 => 0 202 203prev => 2005013112:00:00 204 205freq 0:1*0:31:12:0:0 => 0 206 207basedate 2005-01-27-00:00:00 => 0 208 209start 2007-01-01-00:00:00 => 0 210 211end 2007-12-31-00:00:00 => 0 212 213next => 2007013112:00:00 214 215freq 0:1*0:31:12:0:0 => 0 216 217basedate 2005-01-27-00:00:00 => 0 218 219start 2007-01-01-00:00:00 => 0 220 221end 2007-12-31-23:59:59 => 0 222 223prev => 2007123112:00:00 224 225"; 226 227$::ti->tests(func => \&test, 228 tests => $tests); 229$::ti->done_testing(); 230 231#Local Variables: 232#mode: cperl 233#indent-tabs-mode: nil 234#cperl-indent-level: 3 235#cperl-continued-statement-offset: 2 236#cperl-continued-brace-offset: 0 237#cperl-brace-offset: 0 238#cperl-brace-imaginary-offset: 0 239#cperl-label-offset: 0 240#End: 241