Esempio n. 1
0
class TestDate(unittest.TestCase):
    def setUp(self) -> None:
        self.dt = Date(2019, 9, 15)

    def test_is_leap_year(self):
        self.dt = Date(2019, 9, 1)
        self.assertTrue(self.dt.is_leap_year(2020))
        self.assertTrue(self.dt.is_leap_year(2000))
        self.assertFalse(self.dt.is_leap_year(2019))
        self.assertFalse(self.dt.is_leap_year(2100))

    def test_get_max_day(self):
        self.assertEqual(self.dt.get_max_day(2020, 2), 29)
        self.assertEqual(self.dt.get_max_day(2019, 2), 28)
        self.assertEqual(self.dt.get_max_day(2020, 1), 31)
        self.assertEqual(self.dt.get_max_day(2020, 11), 30)
        self.assertEqual(self.dt.get_max_day(2020, 12), 31)

    def test_add_year(self):
        self.assertEqual(repr(self.dt), 'Date(2019, 9, 15)')
        self.dt.add_year(1)
        self.assertEqual(repr(self.dt), 'Date(2020, 9, 15)')
        self.dt.add_year(11)
        self.assertEqual(repr(self.dt), 'Date(2031, 9, 15)')
        self.assertRaises(ValueError, self.dt.add_year, -1)

    def test_add_month(self):
        self.assertEqual(repr(self.dt), 'Date(2019, 9, 15)')
        self.dt.add_month(3)
        self.assertEqual(repr(self.dt), 'Date(2019, 12, 15)')
        self.dt.add_month(5)
        self.assertEqual(repr(self.dt), 'Date(2020, 5, 15)')
        self.dt.add_month(12)
        self.assertEqual(repr(self.dt), 'Date(2021, 5, 15)')
        self.dt.add_month(360)
        self.assertEqual(repr(self.dt), 'Date(2051, 5, 15)')
        self.dt.add_month(8)
        self.assertEqual(repr(self.dt), 'Date(2052, 1, 15)')
        self.dt.add_month(12)
        self.assertEqual(repr(self.dt), 'Date(2053, 1, 15)')
        self.dt.add_month(11)
        self.assertEqual(repr(self.dt), 'Date(2053, 12, 15)')
        self.assertRaises(ValueError, self.dt.add_month, -1)

    def test_add_day(self):
        self.assertEqual(repr(self.dt), 'Date(2019, 9, 15)')
        self.dt.add_day(5)
        self.assertEqual(repr(self.dt), 'Date(2019, 9, 20)')
        self.dt.add_day(20)
        self.assertEqual(repr(self.dt), 'Date(2019, 10, 10)')
        self.dt.add_day(30)
        self.assertEqual(repr(self.dt), 'Date(2019, 11, 9)')
        self.dt.add_day(61)
        self.assertEqual(repr(self.dt), 'Date(2020, 1, 9)')

    def test_date2_date1(self):
        self.assertEqual(
            Date.date2_date1(Date(2020, 9, 20), Date(2010, 8, 10)),
            f'3694 days between 20.9.2020 and 10.8.2010')
        self.assertEqual(
            Date.date2_date1(Date(2020, 1, 20), Date(2010, 8, 10)),
            f'3450 days between 20.1.2020 and 10.8.2010')
        self.assertEqual(
            Date.date2_date1(Date(2020, 9, 20), Date(2019, 8, 10)),
            f'407 days between 20.9.2020 and 10.8.2019')
        self.assertEqual(
            Date.date2_date1(Date(2020, 9, 20), Date(2020, 8, 10)),
            f'41 days between 20.9.2020 and 10.8.2020')
        self.assertEqual(
            Date.date2_date1(Date(2020, 9, 20), Date(2020, 8, 30)),
            f'21 days between 20.9.2020 and 30.8.2020')
        self.assertEqual(
            Date.date2_date1(Date(2020, 9, 20), Date(2020, 9, 10)),
            f'10 days between 20.9.2020 and 10.9.2020')
        self.assertEqual(
            Date.date2_date1(Date(2020, 9, 20), Date(2020, 9, 20)),
            f'0 days between 20.9.2020 and 20.9.2020')
        self.assertRaises(ValueError, Date.date2_date1, Date(2020, 9, 20),
                          Date(2020, 9, 30))