def test_enumerate(self):
     
     dtr = DatetimeRange(self.dt1, self.dt2, self.delta)
     dates = [d for d in dtr.enumerate()]
     self.assertEqual(dates, [
         (0, datetime(2015, 3, 1, 16, 30)),
         (1, datetime(2015, 3, 2, 4, 30)),
         (2, datetime(2015, 3, 2, 16, 30)),
         (3, datetime(2015, 3, 3, 4, 30)),
         (4, datetime(2015, 3, 3, 16, 30)),
         (5, datetime(2015, 3, 4, 4, 30))
     ])
    def test_reverse(self):

        dtr = DatetimeRange(self.dt1, self.dt2, self.delta)
        dtr.reverse()
        dates = [d for d in dtr]
        self.assertEqual(dates, [
            datetime(2015, 3, 4, 7, 15),
            datetime(2015, 3, 3, 19, 15),
            datetime(2015, 3, 3, 7, 15),
            datetime(2015, 3, 2, 19, 15),
            datetime(2015, 3, 2, 7, 15),
            datetime(2015, 3, 1, 19, 15)
        ])
    def test_excluding(self):

        dtr = DatetimeRange(self.dt1, self.dt2, self.delta)
        excludes = [
            datetime(2015, 3, 2, 4, 30), 
            datetime(2015, 3, 3, 16, 30)
        ]
        dates = [d for d in dtr.excluding(excludes)]
        self.assertEqual(dates, [
            datetime(2015, 3, 1, 16, 30),
            datetime(2015, 3, 2, 16, 30),
            datetime(2015, 3, 3, 4, 30),
            datetime(2015, 3, 4, 4, 30)
        ])
 def test_count(self):
     
     dtr = DatetimeRange(self.dt1, self.dt2, self.delta)
     self.assertEqual(dtr.count(datetime(2015, 3, 4, 4, 30)), 1)
    def test_index(self):

        dtr = DatetimeRange(self.dt1, self.dt2, self.delta)
        self.assertEqual(dtr.index(datetime(2015, 3, 3, 4, 30)), 3)