Added a unit test for new case and also tweaked a minor setting in repeat task complete listener that might fix the bug Jon is describing

pull/14/head
Tim Su 15 years ago
parent 8d3e7f5a24
commit 1ddeb2add6

@ -165,7 +165,7 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver {
// detect if we finished
if(newDueDate > DateUtilities.now()) {
// if byDay is set and interval > 1, we need to run again
if(rrule.getByDay().size() > 0 && rrule.getInterval() > 0) {
if(rrule.getByDay().size() > 0 && rrule.getInterval() > 1) {
if(newDueDate - repeatFromDate.getTime() > DateUtilities.ONE_WEEK)
break;
} else if(newDueDate > repeatFromDate.getTime())

@ -88,4 +88,32 @@ public class AdvancedRepeatTests extends TodorooTestCase {
}
}
/** test multiple days per week */
public void testMultipleDaysPerWeek() throws Exception {
Task task = new Task();
long originalDueDate = (DateUtilities.now() - 1 * DateUtilities.ONE_DAY) / 1000L * 1000L;
task.setValue(Task.DUE_DATE, task.createDueDate(Task.URGENCY_SPECIFIC_DAY, DateUtilities.now()));
RRule rrule = new RRule();
rrule.setInterval(1);
rrule.setFreq(Frequency.WEEKLY);
ArrayList<WeekdayNum> days = new ArrayList<WeekdayNum>();
days.add(new WeekdayNum(0, Weekday.MO));
days.add(new WeekdayNum(0, Weekday.TH));
rrule.setByDay(days);
long nextDueDate = RepeatTaskCompleteListener.computeNextDueDate(task, rrule.toIcal());
assertTrue("Due date is '" + new Date(nextDueDate) + "', expected no more than '" +
new Date(DateUtilities.now() + DateUtilities.ONE_WEEK) + "'",
nextDueDate - DateUtilities.now() < DateUtilities.ONE_WEEK);
task.setValue(Task.DUE_DATE, nextDueDate);
long subsequentDueDate = RepeatTaskCompleteListener.computeNextDueDate(task, rrule.toIcal());
assertTrue("Due date is '" + new Date(subsequentDueDate) + "', expected no more than '" +
new Date(DateUtilities.now() + 5 * DateUtilities.ONE_DAY) + "'",
nextDueDate - DateUtilities.now() < 5 * DateUtilities.ONE_DAY);
}
}

Loading…
Cancel
Save