public function testRecurr() { $tests = array(array('2014-01-01', '1d', '2014-01-02'), array('2014-01-01', '1w', '2014-01-08'), array('2014-01-01', '1m', '2014-02-01'), array('2014-01-01', '1y', '2015-01-01'), array('2014-01-01', '2d', '2014-01-03'), array('2014-01-01', '2w', '2014-01-15'), array('2014-01-01', '2m', '2014-03-01'), array('2014-01-01', '2y', '2016-01-01'), array('2014-01-31', '1w', '2014-02-07'), array('2014-01-31', '1m', '2014-03-03'), array('2014-01-01', '+1d', (new DateTime())->modify('+1day')->format('Y-m-d')), array('2014-01-01', '+1w', (new DateTime())->modify('+1week')->format('Y-m-d')), array('2014-01-01', '+1m', (new DateTime())->modify('+1month')->format('Y-m-d')), array('2014-01-01', '+1y', (new DateTime())->modify('+1year')->format('Y-m-d')), array('2014-01-03', '1b', '2014-01-06'), array('2014-01-03', '2b', '2014-01-06'), array('2014-01-03', '3b', '2014-01-06'), array('2014-01-03', '4b', '2014-01-07'), array('2014-01-04', '1wb', '2014-01-13'), array('2014-01-01', '1mb', '2014-02-03'), array('2014-01-03', '1yb', '2015-01-05')); foreach ($tests as $test) { $in = $test[0]; $interval = $test[1]; $out = $test[2]; $ts = new DateTime($in); $r = new Recurrent($interval); $this->assertEquals($r->recurr($ts)->format('Y-m-d'), $out); } }