コード例 #1
0
ファイル: test_calendar.py プロジェクト: jwg4/calexicon
class TestProlepticJulianCalendar(TestJulianCalendar):
    def setUp(self):
        self.calendar = ProlepticJulianCalendar()
        self.addTypeEqualityFunc(
            DateWithCalendar,
            DateWithCalendar.make_assertEqual(self)
        )

    def test_year_1_bce(self):
        self.check_valid_date(-1, 3, 1, JulianCalendar)

    def test_date_near_end_of_vanilla_dates(self):
        self.check_valid_date(9999, 12, 1)

    @given(integers(1, 12), integers(1, 31))
    def test_year_0_does_not_exist(self, month, day):
        self.check_invalid_date(0, month, day)

    @example(-2147483649)
    @given(integers(None, -1))
    def test_feb_29th_does_not_exist_except_julian_leap_years(self, year):
        assume(year % 4 != 0)
        self.check_invalid_date(year, 2, 29)

    @example(-2147483652)
    @given(integers(None, -1))
    def test_feb_29th_does_exist_in_julian_leap_years(self, year):
        assume(year % 4 == 0)
        self.check_valid_date(year, 2, 29)

    def test_display_string_for_bce_date(self):
        """ The display string for a date gives the correct date and specifies the calendar. """
        d = self.calendar.date(-44, 3, 15)
        self.assertEqual(d.calendar, JulianCalendar)
        self.assertEqual(str(d), "15th March 44 BCE (Julian Calendar)")

    def test_display_string_for_proleptic_date(self):
        """ The display string for a date gives the correct date and specifies the calendar. """
        d = self.calendar.date(-100, 7, 13)
        self.assertEqual(str(d), "13th July 100 BCE (Proleptic Julian Calendar)")

    def test_distant_date(self):
        d = self.calendar.date(9999, 12, 1)
        dd = DateWithCalendar(ProlepticJulianCalendar, DistantDate(10000, 2, 12))
        self.assertEqual(d.calendar, dd.calendar)
        self.assertEqual(d.y, dd.y)
        self.assertEqual(d._date, dd._date)
        self.assertTrue(dd == d)
        self.assertTrue(d == dd)
        self.assertEqual(d, dd)

    def test_representation(self):
        self.assertEqual(
            ProlepticJulianCalendar.representation(DistantDate(10000, 2, 12)),
            {'year': 9999, 'month': 12, 'day': 1}
        )
        self.assertEqual(
            ProlepticJulianCalendar.representation(DistantDate(10000, 2, 13)),
            {'year': 9999, 'month': 12, 'day': 2}
        )