def from_fixed(cls, fixed_date): """Return the Roman name corresponding to fixed fixed_date 'fixed_date'.""" julian_date = JulianDate.from_fixed(fixed_date) month_prime = amod(1 + julian_date.month, 12) year_prime = (julian_date.year if month_prime != 1 else (julian_date.year + 1 if (julian_date.year != -1) else 1)) kalends1 = RomanDate(year_prime, month_prime, Event.Kalends, 1, False).to_fixed() if julian_date.day == 1: return RomanDate(julian_date.year, julian_date.month, Event.Kalends, 1, False) elif julian_date.day <= cls.nones_of_month(julian_date.month): return RomanDate(julian_date.year, julian_date.month, Event.Nones, cls.nones_of_month(julian_date.month) - julian_date.day + 1, False) elif julian_date.day <= cls.ides_of_month(julian_date.month): return RomanDate(julian_date.year, julian_date.month, Event.Ides, cls.ides_of_month(julian_date.month) - julian_date.day + 1, False) elif (julian_date.month != MonthOfYear.February) or not julian_date.is_leap_year(julian_date.year): return RomanDate(year_prime, month_prime, Event.Kalends, kalends1 - fixed_date + 1, False) elif julian_date.day < 25: return RomanDate(julian_date.year, MonthOfYear.March, Event.Kalends, 30 - julian_date.day, False) else: return RomanDate(julian_date.year, MonthOfYear.March, Event.Kalends, 31 - julian_date.day, julian_date.day == 25)
def testEaster(self): knownDates = { -214193: JulianDate(-586, 4, 3), -61387: JulianDate(-168, 4, 1), 25469: JulianDate(70, 4, 13), 49217: JulianDate(135, 4, 17), 171307: JulianDate(470, 4, 6), 210155: JulianDate(576, 4, 7), 253427: JulianDate(694, 4, 22), 369740: JulianDate(1013, 4, 11), 400085: JulianDate(1096, 4, 19), 434355: JulianDate(1190, 4, 1), 452605: JulianDate(1240, 4, 22), 470160: JulianDate(1288, 4, 4), 473837: JulianDate(1298, 4, 13), 507850: JulianDate(1391, 4, 3), 524156: JulianDate(1436, 4, 17), 544676: JulianDate(1492, 5, 1), 567118: JulianDate(1553, 4, 12), 569477: JulianDate(1560, 4, 24), 601716: JulianDate(1648, 4, 12), 613424: JulianDate(1680, 4, 21), 626596: JulianDate(1716, 4, 12), 645554: JulianDate(1768, 4, 10), 664224: JulianDate(1819, 4, 18), 671401: JulianDate(1839, 4, 7), 694799: JulianDate(1903, 4, 19), 704424: JulianDate(1929, 5, 5), 708842: JulianDate(1941, 4, 20), 709409: JulianDate(1943, 4, 25), 709580: JulianDate(1943, 4, 25), 727274: JulianDate(1992, 4, 26), 728714: JulianDate(1996, 4, 14), 744313: JulianDate(2038, 4, 25), 764652: JulianDate(2094, 4, 11) } for (fixed_date, julian_date) in knownDates.iteritems(): GregorianDate.from_fixed(fixed_date) self.assertEqual(fixed_date, julian_date.to_fixed(), "Convert to fixed") self.assertEqual(JulianDate.from_fixed(fixed_date), julian_date, "Convert from fixed")
def testConversionFromFixed(self): self.assertEqual(JulianDate.from_fixed(self.testvalue), JulianDate(1945, MonthOfYear.October, 30))