62 lines
2.8 KiB
Python
62 lines
2.8 KiB
Python
import unittest
|
|
import datetime
|
|
from fixedcal.core.date import FixedDate
|
|
|
|
class TestBasicDayOfYearInit(unittest.TestCase):
|
|
def test_day_of_year_init_january_first(self):
|
|
fixed_date = FixedDate(day_of_year=1, year=2022)
|
|
self.assertEqual(fixed_date.year, 2022)
|
|
self.assertEqual(fixed_date.month, 1)
|
|
self.assertEqual(fixed_date.day_of_month, 1)
|
|
|
|
def test_day_of_year_init_february_last(self):
|
|
fixed_date = FixedDate(day_of_year=56, year=2022) # 2022-02-25 Gregorian
|
|
self.assertEqual(fixed_date.year, 2022)
|
|
self.assertEqual(fixed_date.month, 2)
|
|
self.assertEqual(fixed_date.day_of_month, 28)
|
|
|
|
def test_day_of_year_init_sol_month(self):
|
|
fixed_date = FixedDate(day_of_year=171, year=2022) # 2022-06-20 Gregorian
|
|
self.assertEqual(fixed_date.year, 2022)
|
|
self.assertEqual(fixed_date.month, 7)
|
|
self.assertEqual(fixed_date.day_of_month, 3)
|
|
|
|
def test_day_of_year_init_december_last(self):
|
|
fixed_date = FixedDate(day_of_year=364, year=2022) # 2022-12-30 Gregorian
|
|
self.assertEqual(fixed_date.year, 2022)
|
|
self.assertEqual(fixed_date.month, 13)
|
|
self.assertEqual(fixed_date.day_of_month, 28)
|
|
self.assertFalse(fixed_date.is_year_day)
|
|
|
|
def test_day_of_year_init_year_day(self):
|
|
fixed_date = FixedDate(day_of_year=365, year=2022) # 2022-12-31 Gregorian
|
|
self.assertEqual(fixed_date.year, 2022)
|
|
self.assertEqual(fixed_date.month, 13)
|
|
self.assertEqual(fixed_date.day_of_month, 29)
|
|
self.assertTrue(fixed_date.is_year_day)
|
|
|
|
def test_day_of_year_zero(self):
|
|
self.assertRaises(ValueError, lambda : FixedDate(day_of_year=0, year=2022))
|
|
|
|
def test_day_of_year_negative(self):
|
|
self.assertRaises(ValueError, lambda : FixedDate(day_of_year=-1, year=2022))
|
|
|
|
def test_day_of_year_above_maximum_non_leap_year(self):
|
|
# 2022 is not a leap year, so there is no 366th day of year
|
|
self.assertRaises(ValueError, lambda : FixedDate(day_of_year=366, year=2022))
|
|
|
|
def test_day_of_year_above_maximum_leap_year(self):
|
|
# 2024 is a leap year, but there is no 367th day of year
|
|
self.assertRaises(ValueError, lambda : FixedDate(day_of_year=367, year=2024))
|
|
|
|
def test_init_day_of_year_with_none_arguments(self):
|
|
fixed_date = FixedDate(None, 1, None, None, 2022)
|
|
self.assertEqual(fixed_date.date, datetime.date(2022, 1, 1))
|
|
|
|
def test_day_of_year_init_all_days(self):
|
|
year_start = datetime.date(2024, 1, 1) # leap year
|
|
for day_of_year in range(1, 367):
|
|
fixed_date = FixedDate(day_of_year=day_of_year, year=2024)
|
|
native_date = year_start + datetime.timedelta(days=day_of_year-1)
|
|
self.assertEqual(fixed_date.date, native_date)
|