Пример #1
0
    def test_monthly_recurrence(self):
        """
        Test basic rules:
        """
        r = Recurrence(frequency='MONTHLY',
                 start=datetime.datetime(2014, 1, 1),
                 count=3)
        self.assertEqual(list(r.get_startdates()), [
            datetime.datetime(2014, 1, 1, 0, 0),
            datetime.datetime(2014, 2, 1, 0, 0),
            datetime.datetime(2014, 3, 1, 0, 0)])

        r = Recurrence(frequency='MONTHLY',
                 start=datetime.datetime(2014, 1, 1),
                 until=datetime.datetime(2014, 4, 1))
        self.assertEqual(list(r.get_startdates()), [
            datetime.datetime(2014, 1, 1, 0, 0),
            datetime.datetime(2014, 2, 1, 0, 0),
            datetime.datetime(2014, 3, 1, 0, 0),
            datetime.datetime(2014, 4, 1, 0, 0)])

        """
        Verify that when 'until' and 'count' are set use the minimum of both:
        """
        r = Recurrence(frequency='MONTHLY',
                 start=datetime.datetime(2014, 1, 1),
                 until=datetime.datetime(2014, 3, 1), count=10)
        self.assertEqual(list(r.get_startdates()), [
            datetime.datetime(2014, 1, 1, 0, 0),
            datetime.datetime(2014, 2, 1, 0, 0),
            datetime.datetime(2014, 3, 1, 0, 0)])
        r = Recurrence(frequency='MONTHLY',
                 start=datetime.datetime(2014, 1, 1),
                 until=datetime.datetime(2014, 3, 1), count=2)
        self.assertEqual(list(r.get_startdates()), [
            datetime.datetime(2014, 1, 1, 0, 0),
            datetime.datetime(2014, 2, 1, 0, 0)])