public function testCalculateRecurringTaskDueDate() { $td = new TaskDuplication($this->container); $values = array('date_due' => 0); $td->calculateRecurringTaskDueDate($values); $this->assertEquals(0, $values['date_due']); $values = array('date_due' => 0, 'recurrence_factor' => 0, 'recurrence_basedate' => Task::RECURRING_BASEDATE_TRIGGERDATE, 'recurrence_timeframe' => Task::RECURRING_TIMEFRAME_DAYS); $td->calculateRecurringTaskDueDate($values); $this->assertEquals(0, $values['date_due']); $values = array('date_due' => 1431291376, 'recurrence_factor' => 1, 'recurrence_basedate' => Task::RECURRING_BASEDATE_TRIGGERDATE, 'recurrence_timeframe' => Task::RECURRING_TIMEFRAME_DAYS); $td->calculateRecurringTaskDueDate($values); $this->assertEquals(time() + 86400, $values['date_due'], '', 1); $values = array('date_due' => 1431291376, 'recurrence_factor' => -2, 'recurrence_basedate' => Task::RECURRING_BASEDATE_TRIGGERDATE, 'recurrence_timeframe' => Task::RECURRING_TIMEFRAME_DAYS); $td->calculateRecurringTaskDueDate($values); $this->assertEquals(time() - 2 * 86400, $values['date_due'], '', 1); $values = array('date_due' => 1431291376, 'recurrence_factor' => 1, 'recurrence_basedate' => Task::RECURRING_BASEDATE_DUEDATE, 'recurrence_timeframe' => Task::RECURRING_TIMEFRAME_DAYS); $td->calculateRecurringTaskDueDate($values); $this->assertEquals(1431291376 + 86400, $values['date_due'], '', 1); $values = array('date_due' => 1431291376, 'recurrence_factor' => -1, 'recurrence_basedate' => Task::RECURRING_BASEDATE_DUEDATE, 'recurrence_timeframe' => Task::RECURRING_TIMEFRAME_DAYS); $td->calculateRecurringTaskDueDate($values); $this->assertEquals(1431291376 - 86400, $values['date_due'], '', 1); $values = array('date_due' => 1431291376, 'recurrence_factor' => 2, 'recurrence_basedate' => Task::RECURRING_BASEDATE_DUEDATE, 'recurrence_timeframe' => Task::RECURRING_TIMEFRAME_MONTHS); $td->calculateRecurringTaskDueDate($values); $this->assertEquals(1436561776, $values['date_due'], '', 1); $values = array('date_due' => 1431291376, 'recurrence_factor' => 2, 'recurrence_basedate' => Task::RECURRING_BASEDATE_DUEDATE, 'recurrence_timeframe' => Task::RECURRING_TIMEFRAME_YEARS); $td->calculateRecurringTaskDueDate($values); $this->assertEquals(1494449776, $values['date_due'], '', 1); }