From 3442701195190f7385ae5c1b4721248f231c8916 Mon Sep 17 00:00:00 2001 From: PyryL Date: Sun, 11 Dec 2022 10:15:04 +0200 Subject: [PATCH] year quarters added --- fixedcal/core/date.py | 12 +++++++++++- tests/basic_datetime_test.py | 16 ++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/fixedcal/core/date.py b/fixedcal/core/date.py index 8b0957c..7d9f05b 100644 --- a/fixedcal/core/date.py +++ b/fixedcal/core/date.py @@ -88,7 +88,17 @@ class FixedDate: """ return ((self._day_of_year-1) // 7) + 1 - # TODO: year quarter + @property + def year_quarter(self) -> int: + """Quarter of the year. Value 4 for year day. + + Returns: + int: In range 1...4 + """ + if self.is_year_day: + return 4 + return ((self.day_of_year-1) // 91) + 1 + # TODO: datetime instance # TODO: plus and minus operations # TODO: equatable diff --git a/tests/basic_datetime_test.py b/tests/basic_datetime_test.py index 1668cc6..02bf8c9 100644 --- a/tests/basic_datetime_test.py +++ b/tests/basic_datetime_test.py @@ -12,6 +12,7 @@ class TestBasicDatetimeInit(unittest.TestCase): self.assertEqual(fixed_date.week_of_month, 1) self.assertEqual(fixed_date.weekday, 1) self.assertEqual(fixed_date.week_of_year, 1) + self.assertEqual(fixed_date.year_quarter, 1) def test_datetime_init_february_last(self): fixed_date = FixedDate(date=datetime(2022, 2, 25)) @@ -22,6 +23,7 @@ class TestBasicDatetimeInit(unittest.TestCase): self.assertEqual(fixed_date.week_of_month, 4) self.assertEqual(fixed_date.weekday, 7) self.assertEqual(fixed_date.week_of_year, 8) + self.assertEqual(fixed_date.year_quarter, 1) def test_datetime_init_sol_month(self): fixed_date = FixedDate(date=datetime(2022, 6, 20)) @@ -32,6 +34,18 @@ class TestBasicDatetimeInit(unittest.TestCase): self.assertEqual(fixed_date.week_of_month, 1) self.assertEqual(fixed_date.weekday, 3) self.assertEqual(fixed_date.week_of_year, 25) + self.assertEqual(fixed_date.year_quarter, 2) + + def test_datetime_init_middle_of_september(self): + fixed_date = FixedDate(date=datetime(2022, 9, 15)) + self.assertEqual(fixed_date.year, 2022) + self.assertEqual(fixed_date.month, 10) + self.assertEqual(fixed_date.day_of_month, 6) + self.assertEqual(fixed_date.day_of_year, 258) + self.assertEqual(fixed_date.week_of_month, 1) + self.assertEqual(fixed_date.weekday, 6) + self.assertEqual(fixed_date.week_of_year, 37) + self.assertEqual(fixed_date.year_quarter, 3) def test_datetime_init_december_last(self): fixed_date = FixedDate(date=datetime(2022, 12, 30)) @@ -43,6 +57,7 @@ class TestBasicDatetimeInit(unittest.TestCase): self.assertEqual(fixed_date.week_of_month, 4) self.assertEqual(fixed_date.weekday, 7) self.assertEqual(fixed_date.week_of_year, 52) + self.assertEqual(fixed_date.year_quarter, 4) def test_datetime_init_year_day(self): fixed_date = FixedDate(date=datetime(2022, 12, 31)) @@ -54,3 +69,4 @@ class TestBasicDatetimeInit(unittest.TestCase): self.assertEqual(fixed_date.week_of_month, 1) self.assertEqual(fixed_date.weekday, 1) self.assertEqual(fixed_date.week_of_year, 53) + self.assertEqual(fixed_date.year_quarter, 4)