def test_add(self): dt = self.date1_365_day # datetime + timedelta self.assertEqual( dt + self.delta, # add 25 hours dt.replace(day=dt.day + 1, hour=dt.hour + 1)) # timedelta + datetime self.assertEqual( self.delta + dt, # add 25 hours dt.replace(day=dt.day + 1, hour=dt.hour + 1)) # test the Julian/Gregorian transition self.assertEqual(self.date4_gregorian + self.delta, DatetimeGregorian(1582, 10, 15, 1)) # The Julian calendar has no invalid dates self.assertEqual(self.date8_julian + self.delta, DatetimeJulian(1582, 10, 5, 1)) # Test going over the year boundary. self.assertEqual( DatetimeGregorian(2000, 11, 1) + timedelta(days=30 + 31), DatetimeGregorian(2001, 1, 1)) # Year 2000 is a leap year. self.assertEqual( DatetimeGregorian(2000, 1, 1) + timedelta(days=31 + 29), DatetimeGregorian(2000, 3, 1)) # Test the 366_day calendar. self.assertEqual( DatetimeAllLeap(1, 1, 1) + timedelta(days=366 * 10 + 31), DatetimeAllLeap(11, 2, 1)) # The Gregorian calendar has no year zero. self.assertEqual( DatetimeGregorian(-1, 12, 31) + self.delta, DatetimeGregorian(1, 1, 1, 1)) def invalid_add_1(): self.date1_365_day + 1 def invalid_add_2(): 1 + self.date1_365_day for func in [invalid_add_1, invalid_add_2]: self.assertRaises(TypeError, func)
def setUp(self): self.date1_365_day = DatetimeNoLeap(-5000, 1, 2, 12) self.date2_365_day = DatetimeNoLeap(-5000, 1, 3, 12) self.date3_gregorian = DatetimeGregorian(1969, 7, 20, 12) # last day of the Julian calendar in the mixed Julian/Gregorian calendar self.date4_gregorian = DatetimeGregorian(1582, 10, 4) # first day of the Gregorian calendar in the mixed Julian/Gregorian calendar self.date5_gregorian = DatetimeGregorian(1582, 10, 15) self.date6_proleptic_gregorian = DatetimeProlepticGregorian(1582, 10, 15) self.date7_360_day = Datetime360Day(2000, 1, 1) self.date8_julian = DatetimeJulian(1582, 10, 4) # a datetime.datetime instance (proleptic Gregorian calendar) self.datetime_date1 = datetime(1969, 7, 21, 12) self.delta = timedelta(hours=25)