Blob Blame History Raw
#!/usr/bin/perl -w

use Test::Inter;
$t = new Test::Inter 'recur :: modifiers';
$testdir = '';
$testdir = $t->testdir();

use Date::Manip;
if (DateManipVersion() >= 6.00) {
   $t->feature("DM6",1);
}

$t->skip_all('Date::Manip 6.xx required','DM6');


sub test {
  (@test)=@_;
  $err = $obj->parse(@test);
  if ($err) {
     return $obj->err();
  } else {
     @dates = $obj->dates();
     @ret   = ();
     foreach my $d (@dates) {
        $v = $d->value();
        push(@ret,$v);
     }
     return @ret;
  }
}

$obj = new Date::Manip::Recur;
$obj->config("forcedate","2000-01-21-00:00:00,America/New_York");
$obj->config("ConfigFile","$testdir/Manip.cnf");

$tests="

1*1:1:1:0:0:0
EASTER
'Jan 1 1997'
'Jan 1 1997'
'Jan 1 2000'
   =>
   1997033000:00:00
   1998041200:00:00
   1999040400:00:00

*1997-1999:1:1:1:0:0:0
EASTER
__undef__
__undef__
__undef__
   =>
   1997033000:00:00
   1998041200:00:00
   1999040400:00:00

*1999:1:1,2:6:0:0:0
CWD
__undef__
__undef__
__undef__
   =>
   1999010400:00:00
   1999010800:00:00

*1999:1:1,2:6:0:0:0
CWP
__undef__
__undef__
__undef__
   =>
   1998123100:00:00
   1999010800:00:00

*1999:1:1,2:6:0:0:0
CWN
__undef__
__undef__
__undef__
   =>
   1999010400:00:00
   1999010800:00:00

*1999:1-4:2:0:12:00:00
PD1,BD2,FW2
__undef__
__undef__
__undef__
   =>
   1999010612:00:00
   1999020312:00:00
   1999030312:00:00
   1999040712:00:00

*1999:1-4:2:0:12:00:00
PD1,BD2
__undef__
__undef__
__undef__
   =>
   1999010212:00:00
   1999013012:00:00
   1999022712:00:00
   1999040312:00:00

*1999:1-4:2:0:12:00:00
PD1
__undef__
__undef__
__undef__
   =>
   1999010412:00:00
   1999020112:00:00
   1999030112:00:00
   1999040512:00:00

*1999:1-4:2:0:12:00:00
PT1
__undef__
__undef__
__undef__
   =>
   1999011112:00:00
   1999020812:00:00
   1999030812:00:00
   1999041212:00:00

*1999:1-2:2:0:12:00:00
PD7
__undef__
__undef__
__undef__
   =>
   1999011012:00:00
   1999020712:00:00

*1999:1-2:2:0:12:00:00
   =>
   1999011112:00:00
   1999020812:00:00

0:0:0:0:12:0:0
'Jan 16 1998 at 12:00'
'Jan 15 1998 at 00:00'
'Jan 20 1998 at 00:00'
   =>
   1998011500:00:00
   1998011512:00:00
   1998011600:00:00
   1998011612:00:00
   1998011700:00:00
   1998011712:00:00
   1998011800:00:00
   1998011812:00:00
   1998011900:00:00
   1998011912:00:00
   1998012000:00:00

0:0:0:1*12,14:0,30:0
'Jan 16 1998 at 12:00'
'Jan 15 1998 at 00:00'
'Jan 20 1998 at 00:00'
   =>
   1998011512:00:00
   1998011512:30:00
   1998011514:00:00
   1998011514:30:00
   1998011612:00:00
   1998011612:30:00
   1998011614:00:00
   1998011614:30:00
   1998011712:00:00
   1998011712:30:00
   1998011714:00:00
   1998011714:30:00
   1998011812:00:00
   1998011812:30:00
   1998011814:00:00
   1998011814:30:00
   1998011912:00:00
   1998011912:30:00
   1998011914:00:00
   1998011914:30:00

0:0:0:1:6*0,30:0
'Jan 16 1998 at 12:00'
'Jan 15 1998 at 00:00'
'Jan 20 1998 at 00:00'
   =>
   1998011506:00:00
   1998011506:30:00
   1998011612:00:00
   1998011612:30:00
   1998011718:00:00
   1998011718:30:00
   1998011900:00:00
   1998011900:30:00

2:0:0*045:0:0:0
'Jan 1 1998'
'Jan 1 1980'
'Jan 1 1990'
   =>
   1980021400:00:00
   1982021400:00:00
   1984021400:00:00
   1986021400:00:00
   1988021400:00:00

2:0:0*045-047:0:0:0
'Jan 1 1998'
'Jan 1 1980'
'Jan 1 1990'
   =>
   1980021400:00:00
   1980021500:00:00
   1980021600:00:00
   1982021400:00:00
   1982021500:00:00
   1982021600:00:00
   1984021400:00:00
   1984021500:00:00
   1984021600:00:00
   1986021400:00:00
   1986021500:00:00
   1986021600:00:00
   1988021400:00:00
   1988021500:00:00
   1988021600:00:00

2:1:0*0:0:0:0
'Jan 1 1985'
'Jan 1 1980'
'Jan 1 1990'
   =>
   1980110100:00:00
   1982120100:00:00
   1985010100:00:00
   1987020100:00:00
   1989030100:00:00

0:0:2*2:0:0:0
'Jan 16 1998'
'Jan  1 1998'
'Feb 28 1998'
   =>
   1998011300:00:00
   1998012700:00:00
   1998021000:00:00
   1998022400:00:00

0:0:2*2,4:0:0:0
'Jan 16 1998'
'Jan  1 1998'
'Feb 28 1998'
   =>
   1998010100:00:00
   1998011300:00:00
   1998011500:00:00
   1998012700:00:00
   1998012900:00:00
   1998021000:00:00
   1998021200:00:00
   1998022400:00:00
   1998022600:00:00

0:1:0*2,31:0:0:0
'Jan 1 1998'
'Jan 1 1998'
'Jul 1 1998'
   =>
   1998010200:00:00
   1998013100:00:00
   1998020200:00:00
   1998030200:00:00
   1998033100:00:00
   1998040200:00:00
   1998050200:00:00
   1998053100:00:00
   1998060200:00:00

0:1:0*-2,-31:0:0:0
'Jan 1 1998'
'Jan 1 1998'
'Jul 1 1998'
   =>
   1998010100:00:00
   1998013000:00:00
   1998022700:00:00
   1998030100:00:00
   1998033000:00:00
   1998042900:00:00
   1998050100:00:00
   1998053000:00:00
   1998062900:00:00
   1998070100:00:00

0:1*2,-1:0:0:0:0
'Jan 1 1998'
'Jan 1 1998'
'Mar 31 1998'
   =>
   1998011200:00:00
   1998012600:00:00
   1998020900:00:00
   1998022300:00:00
   1998030900:00:00
   1998033000:00:00

0:1*2,-2:2:0:0:0
'Jan 1 1998'
'Jan 1 1998'
'Jul 1 1998'
   =>
   1998011300:00:00
   1998012000:00:00
   1998021000:00:00
   1998021700:00:00
   1998031000:00:00
   1998032400:00:00
   1998041400:00:00
   1998042100:00:00
   1998051200:00:00
   1998051900:00:00
   1998060900:00:00
   1998062300:00:00

2:0*10:0:0:0:0
'Jan 1 1985'
'Jan 1 1980'
'Jan 1 1990'
   =>
   1981030200:00:00
   1983030700:00:00
   1985030400:00:00
   1987030200:00:00
   1989030600:00:00

2:0*10:2:0:0:0
'Jan 1 1985'
'Jan 1 1980'
'Jan 1 1990'
   =>
   1981031000:00:00
   1983030800:00:00
   1985030500:00:00
   1987031000:00:00
   1989030700:00:00

2*3:0:2,30:0:0:0
'Jan 1 1985'
'Jan 1 1980'
'Jan 1 1990'
   =>
   1981030200:00:00
   1981033000:00:00
   1983030200:00:00
   1983033000:00:00
   1985030200:00:00
   1985033000:00:00
   1987030200:00:00
   1987033000:00:00
   1989030200:00:00
   1989033000:00:00

2*3:0:0:0:0:0
'Jan 1 1985'
'Jan 1 1980'
'Jan 1 1990'
   =>
   1981030100:00:00
   1983030100:00:00
   1985030100:00:00
   1987030100:00:00
   1989030100:00:00

3*2,5:2,-2:0:0:0:0
'Jan 1 1985'
'Jan 1 1980'
'Jan 1 1986'
   =>
   1982020800:00:00
   1982021500:00:00
   1982051000:00:00
   1982052400:00:00
   1985021100:00:00
   1985021800:00:00
   1985051300:00:00
   1985052000:00:00

3*5,2:2,-2:0:0:0:0
'Jan 1 1985'
'Jan 1 1980'
'Jan 1 1986'
   =>
   1982020800:00:00
   1982021500:00:00
   1982051000:00:00
   1982052400:00:00
   1985021100:00:00
   1985021800:00:00
   1985051300:00:00
   1985052000:00:00

3*2,5:2:2:0:0:0
'Jan 1 1985'
'Jan 1 1980'
'Jan 1 1990'
   =>
   1982020900:00:00
   1982051100:00:00
   1985021200:00:00
   1985051400:00:00
   1988020900:00:00
   1988051000:00:00

1*2:2:0:0:0:0
'Jan 1 1980'
'Jan 1 1980'
'Dec 1 1982'
   =>
   1980021100:00:00
   1981020900:00:00
   1982020800:00:00

1*2:2:2:0:0:0
'Jan 1 1980'
'Jan 1 1980'
'Dec 1 1982'
   =>
   1980021200:00:00
   1981021000:00:00
   1982020900:00:00

*2000:2:1:1:0:0:0
   =>
   2000020700:00:00

*2000:2:1:7:0:0:0
   =>
   2000020600:00:00

*2000:2:1:0:0:0:0
   =>
   2000020700:00:00

*2000:2:-1:1:0:0:0
   =>
   2000022800:00:00

*2000:2:-1:7:0:0:0
   =>
   2000022700:00:00

*2000:2:-1:0:0:0:0
   =>
   2000022800:00:00

*2000:0:0:0:0:0:0
   =>
   2000010100:00:00

*2000:0:0:61:0:0:0
   =>
   2000030100:00:00

*2000:0:0:-1:0:0:0
   =>
   2000123100:00:00

*2000:2:0:2:0:0:0
   =>
   2000020200:00:00

*2000:2:0:-2:0:0:0
   =>
   2000022800:00:00

*2000:0:2:2:0:0:0
   =>
   2000011100:00:00

*2000:0:2:6:0:0:0
   =>
   2000010800:00:00

*2000:0:-2:2:0:0:0
   =>
   2000121900:00:00

*2000:0:-2:6:0:0:0
   =>
   2000122300:00:00

*2000:0:2:0:0:0:0
   =>
   2000011000:00:00

*2000:0:-2:0:0:0:0
   =>
   2000121800:00:00

*1990,1992:0:0:45:0:0:0
   =>
   1990021400:00:00
   1992021400:00:00

*1990,1992:0:0:0:0:0:0
   =>
   1990010100:00:00
   1992010100:00:00

*1990,1992:5:0:0:0:0:0
   =>
   1990050100:00:00
   1992050100:00:00

*1990,1992:5:0:12:0:0:0
   =>
   1990051200:00:00
   1992051200:00:00

*1998:0:12,14:0:0:0:0
   =>
   1998031600:00:00
   1998033000:00:00

*1998:0:12,14:2:0:0:0
   =>
   1998032400:00:00
   1998040700:00:00

*1998:2:2,-2:0:0:0:0
   =>
   1998020900:00:00
   1998021600:00:00

*1998:2:2,-2:2:0:0:0
   =>
   1998021000:00:00
   1998021700:00:00

*1998:2:2,-2:2:0:0:0
1998021000:00:00
1998021000:00:00
1998021200:00:00
   =>
   1998021000:00:00

1*2:0:-1:0:0:0
2000-01-01
2000-01-01
2005-12-31
   =>
   2000022900:00:00
   2001022800:00:00
   2002022800:00:00
   2003022800:00:00
   2004022900:00:00
   2005022800:00:00

1:0*2:0:0:0:0
2000-01-01
2000-01-01
2000-12-31
   =>
   2000011000:00:00

1:0*-2:0:0:0:0
2000-01-01
2000-01-01
2000-12-31
   =>
   2000121800:00:00

1:0*2:1:0:0:0
2000-01-01
2000-01-01
2000-12-31
   =>
   2000011000:00:00

1:0*-2:1:0:0:0
2000-01-01
2000-01-01
2000-12-31
   =>
   2000121800:00:00

1:1*2:0:0:0:0
'Jan  1 2000'
'Jan 10 2000'
'Dec 31 2002'
   =>
   2000011000:00:00
   2001021200:00:00
   2002031100:00:00

1:1*-2:0:0:0:0
'Jan  1 2000'
'Jan 10 2000'
'Dec 31 2002'
   =>
   2000012400:00:00
   2001021900:00:00
   2002031800:00:00

1:1*2:1:0:0:0
'Jan 10 2000'
'Jan  1 2000'
'Dec 31 2002'
   =>
   2000011000:00:00
   2001021200:00:00
   2002031100:00:00

1:1*-2:1:0:0:0
'Jan 10 2000'
'Jan  1 2000'
'Dec 31 2002'
   =>
   2000012400:00:00
   2001021900:00:00
   2002031800:00:00

1:1:1*0:0:0:0
'Jan  4 2000'
'Jan  1 2000'
'Dec 31 2002'
   =>
   2000010300:00:00
   2001020500:00:00
   2002031100:00:00

1:0:0*15:0:0:0
'Jan  1 2000'
'Jan  1 2000'
'Dec 31 2002'
   =>
   2000011500:00:00
   2001011500:00:00
   2002011500:00:00

1:0:0*-10:0:0:0
'Jan  1 2000'
'Jan  1 2000'
'Dec 31 2002'
   =>
   2000122200:00:00
   2001122200:00:00
   2002122200:00:00

1:1:1*2:0:0:0
'Jan  4 2000'
'Jan  1 2000'
'Dec 31 2002'
   =>
   2000010400:00:00
   2001020600:00:00
   2002031200:00:00

1:1:0*10:0:0:0
'Jan  1 2000'
'Jan  4 2000'
'Dec 31 2002'
   =>
   2000011000:00:00
   2001021000:00:00
   2002031000:00:00

*2000-2009:0:0:366:0:0:0
   =>
   2000123100:00:00
   2004123100:00:00
   2008123100:00:00

*2000:1-5:0:31:0:0:0
   =>
   2000013100:00:00
   2000033100:00:00
   2000053100:00:00

*2000-2009:0:53:1:0:0:0
   =>
   2001123100:00:00
   2007123100:00:00

*2000-2009:0:-53:1:0:0:0
   =>
   2001010100:00:00
   2007010100:00:00

1*1-4:0:31:0:0:0
'Jan  1 2000'
'Jan  1 2000'
'Dec 31 2000'
   =>
   2000013100:00:00
   2000033100:00:00

1*1-4:0:-31:0:0:0
'Jan  1 2000'
'Jan  1 2000'
'Dec 31 2000'
   =>
   2000010100:00:00
   2000030100:00:00

1:1:0*-10:0:0:0
'Jan  1 2000'
'Jan  4 2000'
'Dec 31 2002'
   =>
   2000012200:00:00
   2001021900:00:00
   2002032200:00:00

*2000:1-5:5:2:0:0:0
   =>
   2000022900:00:00
   2000053000:00:00

*2000:1-5:-5:2:0:0:0
   =>
   2000020100:00:00
   2000050200:00:00

*2000:1-5:5:0:0:0:0
   =>
   2000013100:00:00
   2000052900:00:00

*2000:1-5:-5:0:0:0:0
   =>
   2000010300:00:00
   2000050100:00:00

1*1-5:5:2:0:0:0
'Jan 1 2000'
'Jan 1 2000'
'Dec 1 2000'
   =>
   2000022900:00:00
   2000053000:00:00

1*1-5:-5:2:0:0:0
'Jan 1 2000'
'Jan 1 2000'
'Dec 1 2000'
   =>
   2000020100:00:00
   2000050200:00:00

1*1-5:5:0:0:0:0
'Jan 1 2000'
'Jan 1 2000'
'Dec 1 2000'
   =>
   2000013100:00:00
   2000052900:00:00

1*1-5:-5:0:0:0:0
'Jan 1 2000'
'Jan 1 2000'
'Dec 1 2000'
   =>
   2000010300:00:00
   2000050100:00:00

1:0*53:1:0:0:0
'Jan 1 2000'
'Jan 1 2000'
'Jan 1 2010'
   =>
   2001123100:00:00
   2007123100:00:00

1:0*-53:1:0:0:0
'Jan 1 2000'
'Jan 1 2000'
'Jan 1 2010'
   =>
   2001010100:00:00
   2007010100:00:00

1:0:0*366:0:0:0
'Jan 1 2000'
'Jan 1 2000'
'Jan 1 2010'
   =>
   2000123100:00:00
   2004123100:00:00
   2008123100:00:00

1:0:0*-366:0:0:0
'Jan 1 2000'
'Jan 1 2000'
'Jan 1 2010'
   =>
   2000010100:00:00
   2004010100:00:00
   2008010100:00:00

'4th day of each month in 1999'
   =>
   1999010400:00:00
   1999020400:00:00
   1999030400:00:00
   1999040400:00:00
   1999050400:00:00
   1999060400:00:00
   1999070400:00:00
   1999080400:00:00
   1999090400:00:00
   1999100400:00:00
   1999110400:00:00
   1999120400:00:00

'2nd tuesday of every month in 1999'
   =>
   1999011200:00:00
   1999020900:00:00
   1999030900:00:00
   1999041300:00:00
   1999051100:00:00
   1999060800:00:00
   1999071300:00:00
   1999081000:00:00
   1999091400:00:00
   1999101200:00:00
   1999110900:00:00
   1999121400:00:00

'every 2nd tuesday in June 1999'
   =>
   1999060800:00:00

";

$t->tests(func  => \&test,
          tests => $tests);
$t->done_testing();

#Local Variables:
#mode: cperl
#indent-tabs-mode: nil
#cperl-indent-level: 3
#cperl-continued-statement-offset: 2
#cperl-continued-brace-offset: 0
#cperl-brace-offset: 0
#cperl-brace-imaginary-offset: 0
#cperl-label-offset: 0
#End: