def setUp(self): self.date1 = datetime(2015, 1, 1, 0, 0, 0) self.date2 = datetime(2015, 1, 1, 12, 0, 0) self.date3 = datetime(2015, 1, 2, 0, 0, 0) self.date4 = datetime(2015, 1, 2, 12, 0, 0) self.date5 = datetime(2015, 1, 3, 0, 0, 0) self.date6 = datetime(2015, 1, 3, 12, 0, 0) self.list = DateRangeList()
class DateRangeListTest(unittest.TestCase): def setUp(self): self.date1 = datetime(2015, 1, 1, 0, 0, 0) self.date2 = datetime(2015, 1, 1, 12, 0, 0) self.date3 = datetime(2015, 1, 2, 0, 0, 0) self.date4 = datetime(2015, 1, 2, 12, 0, 0) self.date5 = datetime(2015, 1, 3, 0, 0, 0) self.date6 = datetime(2015, 1, 3, 12, 0, 0) self.list = DateRangeList() def tearDown(self): pass def test_it_adds_date_ranges(self): range1 = DateRange(self.date1, self.date2) self.list.add(self.date1, self.date2) self.assertIn(range1, self.list) def test_it_sums_the_workhours(self): range1 = DateRange(self.date1, self.date2) range2 = DateRange(self.date3, self.date4) range3 = DateRange(self.date5, self.date6) self.list.add_range(range1).add_range(range2).add_range(range3) self.assertEqual(self.list.total_hours, 36.0) def test_it_keeps_the_ranges_sorted(self): range1 = DateRange(self.date5, self.date6) range2 = DateRange(self.date3, self.date4) range3 = DateRange(self.date1, self.date2) self.list.add_range(range1).add_range(range2).add_range(range3) expected = [ range3, range2, range1 ] self.assertEqual(self.list.ranges, expected) def test_it_does_not_add_intersecting_ranges(self): range1 = DateRange(self.date1, self.date2) range2 = DateRange(self.date3, self.date6) range3 = DateRange(self.date5, self.date6) self.list.add_range(range2).add_range(range1) with self.assertRaises(ValueError): self.list.add_range(range3)