summaryrefslogtreecommitdiff
path: root/test.py
diff options
context:
space:
mode:
authorniemeyer <>2003-10-09 01:09:42 +0000
committerniemeyer <>2003-10-09 01:09:42 +0000
commit7d8be1ad1da511b3e140c648db6862fcd28d0e6c (patch)
treed88f5897af017e1285cb6de3ad72f825e1b249fe /test.py
parentf122a49ea5849efc9ed1a7e357ed26494b44bc46 (diff)
downloaddateutil-7d8be1ad1da511b3e140c648db6862fcd28d0e6c.tar.gz
Dozens of new tests for rrule.
Diffstat (limited to 'test.py')
-rw-r--r--test.py1552
1 files changed, 1552 insertions, 0 deletions
diff --git a/test.py b/test.py
index 93f1d46..4903756 100644
--- a/test.py
+++ b/test.py
@@ -213,6 +213,24 @@ class RRuleTest(unittest.TestCase):
datetime(1997, 9, 4, 9, 0),
datetime(1997, 9, 9, 9, 0)])
+ def testYearlyByNWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ byweekday=(TU(1),TH(-1)),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 25, 9, 0),
+ datetime(1998, 1, 6, 9, 0),
+ datetime(1998, 12, 31, 9, 0)])
+
+ def testYearlyByNWeekDayLarge(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ byweekday=(TU(3),TH(-3)),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 11, 9, 0),
+ datetime(1998, 1, 20, 9, 0),
+ datetime(1998, 12, 17, 9, 0)])
+
def testYearlyByMonthAndWeekDay(self):
self.assertEqual(list(rrule(FREQ_YEARLY,
count=3,
@@ -223,6 +241,237 @@ class RRuleTest(unittest.TestCase):
datetime(1998, 1, 6, 9, 0),
datetime(1998, 1, 8, 9, 0)])
+ def testYearlyByMonthAndNWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ bymonth=(1,3),
+ byweekday=(TU(1),TH(-1)),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 6, 9, 0),
+ datetime(1998, 1, 29, 9, 0),
+ datetime(1998, 3, 3, 9, 0)])
+
+ def testYearlyByMonthAndNWeekDayLarge(self):
+ # This is interesting because the TH(-3) ends up before
+ # the TU(3).
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ bymonth=(1,3),
+ byweekday=(TU(3),TH(-3)),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 15, 9, 0),
+ datetime(1998, 1, 20, 9, 0),
+ datetime(1998, 3, 12, 9, 0)])
+
+ def testYearlyByMonthDayAndWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ bymonthday=(1,3),
+ byweekday=(TU,TH),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 9, 0),
+ datetime(1998, 2, 3, 9, 0),
+ datetime(1998, 3, 3, 9, 0)])
+
+ def testYearlyByMonthAndMonthDayAndWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ bymonth=(1,3),
+ bymonthday=(1,3),
+ byweekday=(TU,TH),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 9, 0),
+ datetime(1998, 3, 3, 9, 0),
+ datetime(2001, 3, 1, 9, 0)])
+
+ def testYearlyByYearDay(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ byyearday=(1,100,200),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 9, 0),
+ datetime(1998, 4, 10, 9, 0),
+ datetime(1998, 7, 19, 9, 0)])
+
+ def testYearlyByMonthAndYearDay(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ bymonth=(4,7),
+ byyearday=(1,100,200),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 10, 9, 0),
+ datetime(1998, 7, 19, 9, 0),
+ datetime(1999, 4, 10, 9, 0)])
+
+ def testYearlyByWeekNo(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ byweekno=20,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 5, 11, 9, 0),
+ datetime(1998, 5, 12, 9, 0),
+ datetime(1998, 5, 13, 9, 0)])
+
+ def testYearlyByWeekNoAndWeekDay(self):
+ # That's a nice one. The first days of week number one
+ # may be in the last year.
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ byweekno=1,
+ byweekday=MO,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 29, 9, 0),
+ datetime(1999, 1, 4, 9, 0),
+ datetime(2000, 1, 3, 9, 0)])
+
+ def testYearlyByWeekNoAndWeekDayLarge(self):
+ # Another nice test. The last days of week number 52/53
+ # may be in the next year.
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ byweekno=52,
+ byweekday=SU,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 28, 9, 0),
+ datetime(1998, 12, 27, 9, 0),
+ datetime(2000, 1, 2, 9, 0)])
+
+ def testYearlyByWeekNoAndWeekDayLast(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ byweekno=-1,
+ byweekday=SU,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 28, 9, 0),
+ datetime(1999, 1, 3, 9, 0),
+ datetime(2000, 1, 2, 9, 0)])
+
+ def testYearlyByEaster(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ byeaster=0,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 12, 9, 0),
+ datetime(1999, 4, 4, 9, 0),
+ datetime(2000, 4, 23, 9, 0)])
+
+ def testYearlyByEasterPos(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ byeaster=1,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 13, 9, 0),
+ datetime(1999, 4, 5, 9, 0),
+ datetime(2000, 4, 24, 9, 0)])
+
+ def testYearlyByEasterNeg(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ byeaster=-1,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 11, 9, 0),
+ datetime(1999, 4, 3, 9, 0),
+ datetime(2000, 4, 22, 9, 0)])
+
+ def testYearlyByWeekNoAndWeekDay53(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ byweekno=53,
+ byweekday=MO,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 12, 28, 9, 0),
+ datetime(2004, 12, 27, 9, 0),
+ datetime(2009, 12, 28, 9, 0)])
+
+ def testYearlyByWeekNoAndWeekDay53(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ byweekno=53,
+ byweekday=MO,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 12, 28, 9, 0),
+ datetime(2004, 12, 27, 9, 0),
+ datetime(2009, 12, 28, 9, 0)])
+
+ def testYearlyByHour(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ byhour=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 0),
+ datetime(1998, 9, 2, 6, 0),
+ datetime(1998, 9, 2, 18, 0)])
+
+ def testYearlyByMinute(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ byminute=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 6),
+ datetime(1997, 9, 2, 9, 18),
+ datetime(1998, 9, 2, 9, 6)])
+
+ def testYearlyBySecond(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 0, 6),
+ datetime(1997, 9, 2, 9, 0, 18),
+ datetime(1998, 9, 2, 9, 0, 6)])
+
+ def testYearlyByHourAndMinute(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ byhour=(6,18),
+ byminute=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 6),
+ datetime(1997, 9, 2, 18, 18),
+ datetime(1998, 9, 2, 6, 6)])
+
+ def testYearlyByHourAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ byhour=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 0, 6),
+ datetime(1997, 9, 2, 18, 0, 18),
+ datetime(1998, 9, 2, 6, 0, 6)])
+
+ def testYearlyByMinuteAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ byminute=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 6, 6),
+ datetime(1997, 9, 2, 9, 6, 18),
+ datetime(1997, 9, 2, 9, 18, 6)])
+
+ def testYearlyByHourAndMinuteAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ byhour=(6,18),
+ byminute=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 6, 6),
+ datetime(1997, 9, 2, 18, 6, 18),
+ datetime(1997, 9, 2, 18, 18, 6)])
+
+ def testYearlyBySetPos(self):
+ self.assertEqual(list(rrule(FREQ_YEARLY,
+ count=3,
+ bymonthday=15,
+ byhour=(6,18),
+ bysetpos=(3,-3),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 11, 15, 18, 0),
+ datetime(1998, 2, 15, 6, 0),
+ datetime(1998, 11, 15, 18, 0)])
+
def testMonthly(self):
self.assertEqual(list(rrule(FREQ_MONTHLY,
count=3,
@@ -296,6 +545,24 @@ class RRuleTest(unittest.TestCase):
datetime(1997, 9, 4, 9, 0),
datetime(1997, 9, 9, 9, 0)])
+ def testMonthlyByNWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ byweekday=(TU(1),TH(-1)),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 0),
+ datetime(1997, 9, 25, 9, 0),
+ datetime(1997, 10, 7, 9, 0)])
+
+ def testMonthlyByNWeekDayLarge(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ byweekday=(TU(3),TH(-3)),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 11, 9, 0),
+ datetime(1997, 9, 16, 9, 0),
+ datetime(1997, 10, 16, 9, 0)])
+
def testMonthlyByMonthAndWeekDay(self):
self.assertEqual(list(rrule(FREQ_MONTHLY,
count=3,
@@ -306,6 +573,225 @@ class RRuleTest(unittest.TestCase):
datetime(1998, 1, 6, 9, 0),
datetime(1998, 1, 8, 9, 0)])
+ def testMonthlyByMonthAndNWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ bymonth=(1,3),
+ byweekday=(TU(1),TH(-1)),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 6, 9, 0),
+ datetime(1998, 1, 29, 9, 0),
+ datetime(1998, 3, 3, 9, 0)])
+
+ def testMonthlyByMonthAndNWeekDayLarge(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ bymonth=(1,3),
+ byweekday=(TU(3),TH(-3)),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 15, 9, 0),
+ datetime(1998, 1, 20, 9, 0),
+ datetime(1998, 3, 12, 9, 0)])
+
+ def testMonthlyByMonthDayAndWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ bymonthday=(1,3),
+ byweekday=(TU,TH),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 9, 0),
+ datetime(1998, 2, 3, 9, 0),
+ datetime(1998, 3, 3, 9, 0)])
+
+ def testMonthlyByMonthAndMonthDayAndWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ bymonth=(1,3),
+ bymonthday=(1,3),
+ byweekday=(TU,TH),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 9, 0),
+ datetime(1998, 3, 3, 9, 0),
+ datetime(2001, 3, 1, 9, 0)])
+
+ def testMonthlyByYearDay(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ byyearday=(1,100,200),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 9, 0),
+ datetime(1998, 4, 10, 9, 0),
+ datetime(1998, 7, 19, 9, 0)])
+
+ def testMonthlyByMonthAndYearDay(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ bymonth=(4,7),
+ byyearday=(1,100,200),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 10, 9, 0),
+ datetime(1998, 7, 19, 9, 0),
+ datetime(1999, 4, 10, 9, 0)])
+
+ def testMonthlyByWeekNo(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ byweekno=20,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 5, 11, 9, 0),
+ datetime(1998, 5, 12, 9, 0),
+ datetime(1998, 5, 13, 9, 0)])
+
+ def testMonthlyByWeekNoAndWeekDay(self):
+ # That's a nice one. The first days of week number one
+ # may be in the last year.
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ byweekno=1,
+ byweekday=MO,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 29, 9, 0),
+ datetime(1999, 1, 4, 9, 0),
+ datetime(2000, 1, 3, 9, 0)])
+
+ def testMonthlyByWeekNoAndWeekDayLarge(self):
+ # Another nice test. The last days of week number 52/53
+ # may be in the next year.
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ byweekno=52,
+ byweekday=SU,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 28, 9, 0),
+ datetime(1998, 12, 27, 9, 0),
+ datetime(2000, 1, 2, 9, 0)])
+
+ def testMonthlyByWeekNoAndWeekDayLast(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ byweekno=-1,
+ byweekday=SU,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 28, 9, 0),
+ datetime(1999, 1, 3, 9, 0),
+ datetime(2000, 1, 2, 9, 0)])
+
+ def testMonthlyByWeekNoAndWeekDay53(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ byweekno=53,
+ byweekday=MO,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 12, 28, 9, 0),
+ datetime(2004, 12, 27, 9, 0),
+ datetime(2009, 12, 28, 9, 0)])
+
+ def testMonthlyByEaster(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ byeaster=0,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 12, 9, 0),
+ datetime(1999, 4, 4, 9, 0),
+ datetime(2000, 4, 23, 9, 0)])
+
+ def testMonthlyByEasterPos(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ byeaster=1,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 13, 9, 0),
+ datetime(1999, 4, 5, 9, 0),
+ datetime(2000, 4, 24, 9, 0)])
+
+ def testMonthlyByEasterNeg(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ byeaster=-1,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 11, 9, 0),
+ datetime(1999, 4, 3, 9, 0),
+ datetime(2000, 4, 22, 9, 0)])
+
+ def testMonthlyByHour(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ byhour=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 0),
+ datetime(1997, 10, 2, 6, 0),
+ datetime(1997, 10, 2, 18, 0)])
+
+ def testMonthlyByMinute(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ byminute=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 6),
+ datetime(1997, 9, 2, 9, 18),
+ datetime(1997, 10, 2, 9, 6)])
+
+ def testMonthlyBySecond(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 0, 6),
+ datetime(1997, 9, 2, 9, 0, 18),
+ datetime(1997, 10, 2, 9, 0, 6)])
+
+ def testMonthlyByHourAndMinute(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ byhour=(6,18),
+ byminute=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 6),
+ datetime(1997, 9, 2, 18, 18),
+ datetime(1997, 10, 2, 6, 6)])
+
+ def testMonthlyByHourAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ byhour=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 0, 6),
+ datetime(1997, 9, 2, 18, 0, 18),
+ datetime(1997, 10, 2, 6, 0, 6)])
+
+ def testMonthlyByMinuteAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ byminute=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 6, 6),
+ datetime(1997, 9, 2, 9, 6, 18),
+ datetime(1997, 9, 2, 9, 18, 6)])
+
+ def testMonthlyByHourAndMinuteAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ byhour=(6,18),
+ byminute=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 6, 6),
+ datetime(1997, 9, 2, 18, 6, 18),
+ datetime(1997, 9, 2, 18, 18, 6)])
+
+ def testMonthlyBySetPos(self):
+ self.assertEqual(list(rrule(FREQ_MONTHLY,
+ count=3,
+ bymonthday=(13,17),
+ byhour=(6,18),
+ bysetpos=(3,-3),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 13, 18, 0),
+ datetime(1997, 9, 17, 6, 0),
+ datetime(1997, 10, 13, 18, 0)])
+
def testWeekly(self):
self.assertEqual(list(rrule(FREQ_WEEKLY,
count=3,
@@ -378,6 +864,15 @@ class RRuleTest(unittest.TestCase):
datetime(1997, 9, 4, 9, 0),
datetime(1997, 9, 9, 9, 0)])
+ def testWeeklyByNWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ byweekday=(TU(1),TH(-1)),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 0),
+ datetime(1997, 9, 4, 9, 0),
+ datetime(1997, 9, 9, 9, 0)])
+
def testWeeklyByMonthAndWeekDay(self):
# This test is interesting, because it crosses the year
# boundary in a weekly period to find day '1' as a
@@ -391,6 +886,215 @@ class RRuleTest(unittest.TestCase):
datetime(1998, 1, 6, 9, 0),
datetime(1998, 1, 8, 9, 0)])
+ def testWeeklyByMonthAndNWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ bymonth=(1,3),
+ byweekday=(TU(1),TH(-1)),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 9, 0),
+ datetime(1998, 1, 6, 9, 0),
+ datetime(1998, 1, 8, 9, 0)])
+
+ def testWeeklyByMonthDayAndWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ bymonthday=(1,3),
+ byweekday=(TU,TH),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 9, 0),
+ datetime(1998, 2, 3, 9, 0),
+ datetime(1998, 3, 3, 9, 0)])
+
+ def testWeeklyByMonthAndMonthDayAndWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ bymonth=(1,3),
+ bymonthday=(1,3),
+ byweekday=(TU,TH),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 9, 0),
+ datetime(1998, 3, 3, 9, 0),
+ datetime(2001, 3, 1, 9, 0)])
+
+ def testWeeklyByYearDay(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ byyearday=(1,100,200),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 9, 0),
+ datetime(1998, 4, 10, 9, 0),
+ datetime(1998, 7, 19, 9, 0)])
+
+ def testWeeklyByMonthAndYearDay(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ bymonth=(1,7),
+ byyearday=(1,100,200),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 9, 0),
+ datetime(1998, 7, 19, 9, 0),
+ datetime(1999, 1, 1, 9, 0)])
+
+ def testWeeklyByWeekNo(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ byweekno=20,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 5, 11, 9, 0),
+ datetime(1998, 5, 12, 9, 0),
+ datetime(1998, 5, 13, 9, 0)])
+
+ def testWeeklyByWeekNoAndWeekDay(self):
+ # That's a nice one. The first days of week number one
+ # may be in the last year.
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ byweekno=1,
+ byweekday=MO,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 29, 9, 0),
+ datetime(1999, 1, 4, 9, 0),
+ datetime(2000, 1, 3, 9, 0)])
+
+ def testWeeklyByWeekNoAndWeekDayLarge(self):
+ # Another nice test. The last days of week number 52/53
+ # may be in the next year.
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ byweekno=52,
+ byweekday=SU,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 28, 9, 0),
+ datetime(1998, 12, 27, 9, 0),
+ datetime(2000, 1, 2, 9, 0)])
+
+ def testWeeklyByWeekNoAndWeekDayLast(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ byweekno=-1,
+ byweekday=SU,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 28, 9, 0),
+ datetime(1999, 1, 3, 9, 0),
+ datetime(2000, 1, 2, 9, 0)])
+
+ def testWeeklyByWeekNoAndWeekDay53(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ byweekno=53,
+ byweekday=MO,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 12, 28, 9, 0),
+ datetime(2004, 12, 27, 9, 0),
+ datetime(2009, 12, 28, 9, 0)])
+
+ def testWeeklyByEaster(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ byeaster=0,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 12, 9, 0),
+ datetime(1999, 4, 4, 9, 0),
+ datetime(2000, 4, 23, 9, 0)])
+
+ def testWeeklyByEasterPos(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ byeaster=1,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 13, 9, 0),
+ datetime(1999, 4, 5, 9, 0),
+ datetime(2000, 4, 24, 9, 0)])
+
+ def testWeeklyByEasterNeg(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ byeaster=-1,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 11, 9, 0),
+ datetime(1999, 4, 3, 9, 0),
+ datetime(2000, 4, 22, 9, 0)])
+
+ def testWeeklyByHour(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ byhour=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 0),
+ datetime(1997, 9, 9, 6, 0),
+ datetime(1997, 9, 9, 18, 0)])
+
+ def testWeeklyByMinute(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ byminute=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 6),
+ datetime(1997, 9, 2, 9, 18),
+ datetime(1997, 9, 9, 9, 6)])
+
+ def testWeeklyBySecond(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 0, 6),
+ datetime(1997, 9, 2, 9, 0, 18),
+ datetime(1997, 9, 9, 9, 0, 6)])
+
+ def testWeeklyByHourAndMinute(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ byhour=(6,18),
+ byminute=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 6),
+ datetime(1997, 9, 2, 18, 18),
+ datetime(1997, 9, 9, 6, 6)])
+
+ def testWeeklyByHourAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ byhour=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 0, 6),
+ datetime(1997, 9, 2, 18, 0, 18),
+ datetime(1997, 9, 9, 6, 0, 6)])
+
+ def testWeeklyByMinuteAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ byminute=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 6, 6),
+ datetime(1997, 9, 2, 9, 6, 18),
+ datetime(1997, 9, 2, 9, 18, 6)])
+
+ def testWeeklyByHourAndMinuteAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ byhour=(6,18),
+ byminute=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 6, 6),
+ datetime(1997, 9, 2, 18, 6, 18),
+ datetime(1997, 9, 2, 18, 18, 6)])
+
+ def testWeeklyBySetPos(self):
+ self.assertEqual(list(rrule(FREQ_WEEKLY,
+ count=3,
+ byweekday=(TU,TH),
+ byhour=(6,18),
+ bysetpos=(3,-3),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 0),
+ datetime(1997, 9, 4, 6, 0),
+ datetime(1997, 9, 9, 18, 0)])
+
def testDaily(self):
self.assertEqual(list(rrule(FREQ_DAILY,
count=3,
@@ -463,6 +1167,15 @@ class RRuleTest(unittest.TestCase):
datetime(1997, 9, 4, 9, 0),
datetime(1997, 9, 9, 9, 0)])
+ def testDailyByNWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ byweekday=(TU(1),TH(-1)),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 0),
+ datetime(1997, 9, 4, 9, 0),
+ datetime(1997, 9, 9, 9, 0)])
+
def testDailyByMonthAndWeekDay(self):
self.assertEqual(list(rrule(FREQ_DAILY,
count=3,
@@ -473,6 +1186,215 @@ class RRuleTest(unittest.TestCase):
datetime(1998, 1, 6, 9, 0),
datetime(1998, 1, 8, 9, 0)])
+ def testDailyByMonthAndNWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ bymonth=(1,3),
+ byweekday=(TU(1),TH(-1)),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 9, 0),
+ datetime(1998, 1, 6, 9, 0),
+ datetime(1998, 1, 8, 9, 0)])
+
+ def testDailyByMonthDayAndWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ bymonthday=(1,3),
+ byweekday=(TU,TH),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 9, 0),
+ datetime(1998, 2, 3, 9, 0),
+ datetime(1998, 3, 3, 9, 0)])
+
+ def testDailyByMonthAndMonthDayAndWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ bymonth=(1,3),
+ bymonthday=(1,3),
+ byweekday=(TU,TH),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 9, 0),
+ datetime(1998, 3, 3, 9, 0),
+ datetime(2001, 3, 1, 9, 0)])
+
+ def testDailyByYearDay(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ byyearday=(1,100,200),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 9, 0),
+ datetime(1998, 4, 10, 9, 0),
+ datetime(1998, 7, 19, 9, 0)])
+
+ def testDailyByMonthAndYearDay(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ bymonth=(1,7),
+ byyearday=(1,100,200),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 9, 0),
+ datetime(1998, 7, 19, 9, 0),
+ datetime(1999, 1, 1, 9, 0)])
+
+ def testDailyByWeekNo(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ byweekno=20,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 5, 11, 9, 0),
+ datetime(1998, 5, 12, 9, 0),
+ datetime(1998, 5, 13, 9, 0)])
+
+ def testDailyByWeekNoAndWeekDay(self):
+ # That's a nice one. The first days of week number one
+ # may be in the last year.
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ byweekno=1,
+ byweekday=MO,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 29, 9, 0),
+ datetime(1999, 1, 4, 9, 0),
+ datetime(2000, 1, 3, 9, 0)])
+
+ def testDailyByWeekNoAndWeekDayLarge(self):
+ # Another nice test. The last days of week number 52/53
+ # may be in the next year.
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ byweekno=52,
+ byweekday=SU,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 28, 9, 0),
+ datetime(1998, 12, 27, 9, 0),
+ datetime(2000, 1, 2, 9, 0)])
+
+ def testDailyByWeekNoAndWeekDayLast(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ byweekno=-1,
+ byweekday=SU,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 28, 9, 0),
+ datetime(1999, 1, 3, 9, 0),
+ datetime(2000, 1, 2, 9, 0)])
+
+ def testDailyByWeekNoAndWeekDay53(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ byweekno=53,
+ byweekday=MO,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 12, 28, 9, 0),
+ datetime(2004, 12, 27, 9, 0),
+ datetime(2009, 12, 28, 9, 0)])
+
+ def testDailyByEaster(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ byeaster=0,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 12, 9, 0),
+ datetime(1999, 4, 4, 9, 0),
+ datetime(2000, 4, 23, 9, 0)])
+
+ def testDailyByEasterPos(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ byeaster=1,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 13, 9, 0),
+ datetime(1999, 4, 5, 9, 0),
+ datetime(2000, 4, 24, 9, 0)])
+
+ def testDailyByEasterNeg(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ byeaster=-1,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 11, 9, 0),
+ datetime(1999, 4, 3, 9, 0),
+ datetime(2000, 4, 22, 9, 0)])
+
+ def testDailyByHour(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ byhour=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 0),
+ datetime(1997, 9, 3, 6, 0),
+ datetime(1997, 9, 3, 18, 0)])
+
+ def testDailyByMinute(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ byminute=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 6),
+ datetime(1997, 9, 2, 9, 18),
+ datetime(1997, 9, 3, 9, 6)])
+
+ def testDailyBySecond(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 0, 6),
+ datetime(1997, 9, 2, 9, 0, 18),
+ datetime(1997, 9, 3, 9, 0, 6)])
+
+ def testDailyByHourAndMinute(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ byhour=(6,18),
+ byminute=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 6),
+ datetime(1997, 9, 2, 18, 18),
+ datetime(1997, 9, 3, 6, 6)])
+
+ def testDailyByHourAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ byhour=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 0, 6),
+ datetime(1997, 9, 2, 18, 0, 18),
+ datetime(1997, 9, 3, 6, 0, 6)])
+
+ def testDailyByMinuteAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ byminute=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 6, 6),
+ datetime(1997, 9, 2, 9, 6, 18),
+ datetime(1997, 9, 2, 9, 18, 6)])
+
+ def testDailyByHourAndMinuteAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ byhour=(6,18),
+ byminute=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 6, 6),
+ datetime(1997, 9, 2, 18, 6, 18),
+ datetime(1997, 9, 2, 18, 18, 6)])
+
+ def testDailyBySetPos(self):
+ self.assertEqual(list(rrule(FREQ_DAILY,
+ count=3,
+ byhour=(6,18),
+ byminute=(15,45),
+ bysetpos=(3,-3),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 15),
+ datetime(1997, 9, 3, 6, 45),
+ datetime(1997, 9, 3, 18, 15)])
+
def testHourly(self):
self.assertEqual(list(rrule(FREQ_HOURLY,
count=3,
@@ -545,6 +1467,15 @@ class RRuleTest(unittest.TestCase):
datetime(1997, 9, 2, 10, 0),
datetime(1997, 9, 2, 11, 0)])
+ def testHourlyByNWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ byweekday=(TU(1),TH(-1)),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 0),
+ datetime(1997, 9, 2, 10, 0),
+ datetime(1997, 9, 2, 11, 0)])
+
def testHourlyByMonthAndWeekDay(self):
self.assertEqual(list(rrule(FREQ_HOURLY,
count=3,
@@ -555,6 +1486,211 @@ class RRuleTest(unittest.TestCase):
datetime(1998, 1, 1, 1, 0),
datetime(1998, 1, 1, 2, 0)])
+ def testHourlyByMonthAndNWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ bymonth=(1,3),
+ byweekday=(TU(1),TH(-1)),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 0, 0),
+ datetime(1998, 1, 1, 1, 0),
+ datetime(1998, 1, 1, 2, 0)])
+
+ def testHourlyByMonthDayAndWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ bymonthday=(1,3),
+ byweekday=(TU,TH),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 0, 0),
+ datetime(1998, 1, 1, 1, 0),
+ datetime(1998, 1, 1, 2, 0)])
+
+ def testHourlyByMonthAndMonthDayAndWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ bymonth=(1,3),
+ bymonthday=(1,3),
+ byweekday=(TU,TH),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 0, 0),
+ datetime(1998, 1, 1, 1, 0),
+ datetime(1998, 1, 1, 2, 0)])
+
+ def testHourlyByYearDay(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ byyearday=(1,100,200),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 0, 0),
+ datetime(1998, 1, 1, 1, 0),
+ datetime(1998, 1, 1, 2, 0)])
+
+ def testHourlyByMonthAndYearDay(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ bymonth=(4,7),
+ byyearday=(1,100,200),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 10, 0, 0),
+ datetime(1998, 4, 10, 1, 0),
+ datetime(1998, 4, 10, 2, 0)])
+
+ def testHourlyByWeekNo(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ byweekno=20,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 5, 11, 0, 0),
+ datetime(1998, 5, 11, 1, 0),
+ datetime(1998, 5, 11, 2, 0)])
+
+ def testHourlyByWeekNoAndWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ byweekno=1,
+ byweekday=MO,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 29, 0, 0),
+ datetime(1997, 12, 29, 1, 0),
+ datetime(1997, 12, 29, 2, 0)])
+
+ def testHourlyByWeekNoAndWeekDayLarge(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ byweekno=52,
+ byweekday=SU,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 28, 0, 0),
+ datetime(1997, 12, 28, 1, 0),
+ datetime(1997, 12, 28, 2, 0)])
+
+ def testHourlyByWeekNoAndWeekDayLast(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ byweekno=-1,
+ byweekday=SU,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 28, 0, 0),
+ datetime(1997, 12, 28, 1, 0),
+ datetime(1997, 12, 28, 2, 0)])
+
+ def testHourlyByWeekNoAndWeekDay53(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ byweekno=53,
+ byweekday=MO,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 12, 28, 0, 0),
+ datetime(1998, 12, 28, 1, 0),
+ datetime(1998, 12, 28, 2, 0)])
+
+ def testHourlyByEaster(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ byeaster=0,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 12, 0, 0),
+ datetime(1998, 4, 12, 1, 0),
+ datetime(1998, 4, 12, 2, 0)])
+
+ def testHourlyByEasterPos(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ byeaster=1,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 13, 0, 0),
+ datetime(1998, 4, 13, 1, 0),
+ datetime(1998, 4, 13, 2, 0)])
+
+ def testHourlyByEasterNeg(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ byeaster=-1,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 11, 0, 0),
+ datetime(1998, 4, 11, 1, 0),
+ datetime(1998, 4, 11, 2, 0)])
+
+ def testHourlyByHour(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ byhour=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 0),
+ datetime(1997, 9, 3, 6, 0),
+ datetime(1997, 9, 3, 18, 0)])
+
+ def testHourlyByMinute(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ byminute=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 6),
+ datetime(1997, 9, 2, 9, 18),
+ datetime(1997, 9, 2, 10, 6)])
+
+ def testHourlyBySecond(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 0, 6),
+ datetime(1997, 9, 2, 9, 0, 18),
+ datetime(1997, 9, 2, 10, 0, 6)])
+
+ def testHourlyByHourAndMinute(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ byhour=(6,18),
+ byminute=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 6),
+ datetime(1997, 9, 2, 18, 18),
+ datetime(1997, 9, 3, 6, 6)])
+
+ def testHourlyByHourAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ byhour=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 0, 6),
+ datetime(1997, 9, 2, 18, 0, 18),
+ datetime(1997, 9, 3, 6, 0, 6)])
+
+ def testHourlyByMinuteAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ byminute=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 6, 6),
+ datetime(1997, 9, 2, 9, 6, 18),
+ datetime(1997, 9, 2, 9, 18, 6)])
+
+ def testHourlyByHourAndMinuteAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ byhour=(6,18),
+ byminute=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 6, 6),
+ datetime(1997, 9, 2, 18, 6, 18),
+ datetime(1997, 9, 2, 18, 18, 6)])
+
+ def testHourlyBySetPos(self):
+ self.assertEqual(list(rrule(FREQ_HOURLY,
+ count=3,
+ byminute=(15,45),
+ bysecond=(15,45),
+ bysetpos=(3,-3),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 15, 45),
+ datetime(1997, 9, 2, 9, 45, 15),
+ datetime(1997, 9, 2, 10, 15, 45)])
+
def testMinutely(self):
self.assertEqual(list(rrule(FREQ_MINUTELY,
count=3,
@@ -627,6 +1763,15 @@ class RRuleTest(unittest.TestCase):
datetime(1997, 9, 2, 9, 1),
datetime(1997, 9, 2, 9, 2)])
+ def testMinutelyByNWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ byweekday=(TU(1),TH(-1)),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 0),
+ datetime(1997, 9, 2, 9, 1),
+ datetime(1997, 9, 2, 9, 2)])
+
def testMinutelyByMonthAndWeekDay(self):
self.assertEqual(list(rrule(FREQ_MINUTELY,
count=3,
@@ -637,6 +1782,210 @@ class RRuleTest(unittest.TestCase):
datetime(1998, 1, 1, 0, 1),
datetime(1998, 1, 1, 0, 2)])
+ def testMinutelyByMonthAndNWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ bymonth=(1,3),
+ byweekday=(TU(1),TH(-1)),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 0, 0),
+ datetime(1998, 1, 1, 0, 1),
+ datetime(1998, 1, 1, 0, 2)])
+
+ def testMinutelyByMonthDayAndWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ bymonthday=(1,3),
+ byweekday=(TU,TH),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 0, 0),
+ datetime(1998, 1, 1, 0, 1),
+ datetime(1998, 1, 1, 0, 2)])
+
+ def testMinutelyByMonthAndMonthDayAndWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ bymonth=(1,3),
+ bymonthday=(1,3),
+ byweekday=(TU,TH),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 0, 0),
+ datetime(1998, 1, 1, 0, 1),
+ datetime(1998, 1, 1, 0, 2)])
+
+ def testMinutelyByYearDay(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ byyearday=(1,100,200),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 0, 0),
+ datetime(1998, 1, 1, 0, 1),
+ datetime(1998, 1, 1, 0, 2)])
+
+ def testMinutelyByMonthAndYearDay(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ bymonth=(4,7),
+ byyearday=(1,100,200),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 10, 0, 0),
+ datetime(1998, 4, 10, 0, 1),
+ datetime(1998, 4, 10, 0, 2)])
+
+ def testMinutelyByWeekNo(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ byweekno=20,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 5, 11, 0, 0),
+ datetime(1998, 5, 11, 0, 1),
+ datetime(1998, 5, 11, 0, 2)])
+
+ def testMinutelyByWeekNoAndWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ byweekno=1,
+ byweekday=MO,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 29, 0, 0),
+ datetime(1997, 12, 29, 0, 1),
+ datetime(1997, 12, 29, 0, 2)])
+
+ def testMinutelyByWeekNoAndWeekDayLarge(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ byweekno=52,
+ byweekday=SU,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 28, 0, 0),
+ datetime(1997, 12, 28, 0, 1),
+ datetime(1997, 12, 28, 0, 2)])
+
+ def testMinutelyByWeekNoAndWeekDayLast(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ byweekno=-1,
+ byweekday=SU,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 28, 0, 0),
+ datetime(1997, 12, 28, 0, 1),
+ datetime(1997, 12, 28, 0, 2)])
+
+ def testMinutelyByWeekNoAndWeekDay53(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ byweekno=53,
+ byweekday=MO,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 12, 28, 0, 0),
+ datetime(1998, 12, 28, 0, 1),
+ datetime(1998, 12, 28, 0, 2)])
+
+ def testMinutelyByEaster(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ byeaster=0,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 12, 0, 0),
+ datetime(1998, 4, 12, 0, 1),
+ datetime(1998, 4, 12, 0, 2)])
+
+ def testMinutelyByEasterPos(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ byeaster=1,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 13, 0, 0),
+ datetime(1998, 4, 13, 0, 1),
+ datetime(1998, 4, 13, 0, 2)])
+
+ def testMinutelyByEasterNeg(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ byeaster=-1,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 11, 0, 0),
+ datetime(1998, 4, 11, 0, 1),
+ datetime(1998, 4, 11, 0, 2)])
+
+ def testMinutelyByHour(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ byhour=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 0),
+ datetime(1997, 9, 2, 18, 1),
+ datetime(1997, 9, 2, 18, 2)])
+
+ def testMinutelyByMinute(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ byminute=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 6),
+ datetime(1997, 9, 2, 9, 18),
+ datetime(1997, 9, 2, 10, 6)])
+
+ def testMinutelyBySecond(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 0, 6),
+ datetime(1997, 9, 2, 9, 0, 18),
+ datetime(1997, 9, 2, 9, 1, 6)])
+
+ def testMinutelyByHourAndMinute(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ byhour=(6,18),
+ byminute=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 6),
+ datetime(1997, 9, 2, 18, 18),
+ datetime(1997, 9, 3, 6, 6)])
+
+ def testMinutelyByHourAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ byhour=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 0, 6),
+ datetime(1997, 9, 2, 18, 0, 18),
+ datetime(1997, 9, 2, 18, 1, 6)])
+
+ def testMinutelyByMinuteAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ byminute=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 6, 6),
+ datetime(1997, 9, 2, 9, 6, 18),
+ datetime(1997, 9, 2, 9, 18, 6)])
+
+ def testMinutelyByHourAndMinuteAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ byhour=(6,18),
+ byminute=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 6, 6),
+ datetime(1997, 9, 2, 18, 6, 18),
+ datetime(1997, 9, 2, 18, 18, 6)])
+
+ def testMinutelyBySetPos(self):
+ self.assertEqual(list(rrule(FREQ_MINUTELY,
+ count=3,
+ bysecond=(15,30,45),
+ bysetpos=(3,-3),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 0, 15),
+ datetime(1997, 9, 2, 9, 0, 45),
+ datetime(1997, 9, 2, 9, 1, 15)])
+
def testSecondly(self):
self.assertEqual(list(rrule(FREQ_SECONDLY,
count=3,
@@ -709,6 +2058,15 @@ class RRuleTest(unittest.TestCase):
datetime(1997, 9, 2, 9, 0, 1),
datetime(1997, 9, 2, 9, 0, 2)])
+ def testSecondlyByNWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ byweekday=(TU(1),TH(-1)),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 0, 0),
+ datetime(1997, 9, 2, 9, 0, 1),
+ datetime(1997, 9, 2, 9, 0, 2)])
+
def testSecondlyByMonthAndWeekDay(self):
self.assertEqual(list(rrule(FREQ_SECONDLY,
count=3,
@@ -719,6 +2077,200 @@ class RRuleTest(unittest.TestCase):
datetime(1998, 1, 1, 0, 0, 1),
datetime(1998, 1, 1, 0, 0, 2)])
+ def testSecondlyByMonthAndNWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ bymonth=(1,3),
+ byweekday=(TU(1),TH(-1)),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 0, 0, 0),
+ datetime(1998, 1, 1, 0, 0, 1),
+ datetime(1998, 1, 1, 0, 0, 2)])
+
+ def testSecondlyByMonthDayAndWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ bymonthday=(1,3),
+ byweekday=(TU,TH),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 0, 0, 0),
+ datetime(1998, 1, 1, 0, 0, 1),
+ datetime(1998, 1, 1, 0, 0, 2)])
+
+ def testSecondlyByMonthAndMonthDayAndWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ bymonth=(1,3),
+ bymonthday=(1,3),
+ byweekday=(TU,TH),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 0, 0, 0),
+ datetime(1998, 1, 1, 0, 0, 1),
+ datetime(1998, 1, 1, 0, 0, 2)])
+
+ def testSecondlyByYearDay(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ byyearday=(1,100,200),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 1, 0, 0, 0),
+ datetime(1998, 1, 1, 0, 0, 1),
+ datetime(1998, 1, 1, 0, 0, 2)])
+
+ def testSecondlyByMonthAndYearDay(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ bymonth=(4,7),
+ byyearday=(1,100,200),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 10, 0, 0, 0),
+ datetime(1998, 4, 10, 0, 0, 1),
+ datetime(1998, 4, 10, 0, 0, 2)])
+
+ def testSecondlyByWeekNo(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ byweekno=20,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 5, 11, 0, 0, 0),
+ datetime(1998, 5, 11, 0, 0, 1),
+ datetime(1998, 5, 11, 0, 0, 2)])
+
+ def testSecondlyByWeekNoAndWeekDay(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ byweekno=1,
+ byweekday=MO,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 29, 0, 0, 0),
+ datetime(1997, 12, 29, 0, 0, 1),
+ datetime(1997, 12, 29, 0, 0, 2)])
+
+ def testSecondlyByWeekNoAndWeekDayLarge(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ byweekno=52,
+ byweekday=SU,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 28, 0, 0, 0),
+ datetime(1997, 12, 28, 0, 0, 1),
+ datetime(1997, 12, 28, 0, 0, 2)])
+
+ def testSecondlyByWeekNoAndWeekDayLast(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ byweekno=-1,
+ byweekday=SU,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 12, 28, 0, 0, 0),
+ datetime(1997, 12, 28, 0, 0, 1),
+ datetime(1997, 12, 28, 0, 0, 2)])
+
+ def testSecondlyByWeekNoAndWeekDay53(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ byweekno=53,
+ byweekday=MO,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 12, 28, 0, 0, 0),
+ datetime(1998, 12, 28, 0, 0, 1),
+ datetime(1998, 12, 28, 0, 0, 2)])
+
+ def testSecondlyByEaster(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ byeaster=0,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 12, 0, 0, 0),
+ datetime(1998, 4, 12, 0, 0, 1),
+ datetime(1998, 4, 12, 0, 0, 2)])
+
+ def testSecondlyByEasterPos(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ byeaster=1,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 13, 0, 0, 0),
+ datetime(1998, 4, 13, 0, 0, 1),
+ datetime(1998, 4, 13, 0, 0, 2)])
+
+ def testSecondlyByEasterNeg(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ byeaster=-1,
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 4, 11, 0, 0, 0),
+ datetime(1998, 4, 11, 0, 0, 1),
+ datetime(1998, 4, 11, 0, 0, 2)])
+
+ def testSecondlyByHour(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ byhour=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 0, 0),
+ datetime(1997, 9, 2, 18, 0, 1),
+ datetime(1997, 9, 2, 18, 0, 2)])
+
+ def testSecondlyByMinute(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ byminute=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 6, 0),
+ datetime(1997, 9, 2, 9, 6, 1),
+ datetime(1997, 9, 2, 9, 6, 2)])
+
+ def testSecondlyBySecond(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 0, 6),
+ datetime(1997, 9, 2, 9, 0, 18),
+ datetime(1997, 9, 2, 9, 1, 6)])
+
+ def testSecondlyByHourAndMinute(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ byhour=(6,18),
+ byminute=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 6, 0),
+ datetime(1997, 9, 2, 18, 6, 1),
+ datetime(1997, 9, 2, 18, 6, 2)])
+
+ def testSecondlyByHourAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ byhour=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 0, 6),
+ datetime(1997, 9, 2, 18, 0, 18),
+ datetime(1997, 9, 2, 18, 1, 6)])
+
+ def testSecondlyByMinuteAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ byminute=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 9, 6, 6),
+ datetime(1997, 9, 2, 9, 6, 18),
+ datetime(1997, 9, 2, 9, 18, 6)])
+
+ def testSecondlyByHourAndMinuteAndSecond(self):
+ self.assertEqual(list(rrule(FREQ_SECONDLY,
+ count=3,
+ byhour=(6,18),
+ byminute=(6,18),
+ bysecond=(6,18),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1997, 9, 2, 18, 6, 6),
+ datetime(1997, 9, 2, 18, 6, 18),
+ datetime(1997, 9, 2, 18, 18, 6)])
+
def testUntilNotMatching(self):
self.assertEqual(list(rrule(FREQ_DAILY,
count=3,