diff options
Diffstat (limited to 'docs/exercises/solutions/mlk_day_rrule_solution.py')
-rw-r--r-- | docs/exercises/solutions/mlk_day_rrule_solution.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/docs/exercises/solutions/mlk_day_rrule_solution.py b/docs/exercises/solutions/mlk_day_rrule_solution.py new file mode 100644 index 0000000..025ebf2 --- /dev/null +++ b/docs/exercises/solutions/mlk_day_rrule_solution.py @@ -0,0 +1,40 @@ +# ------- YOUR CODE -------------# +from dateutil import rrule +from datetime import datetime + +MLK_DAY = rrule.rrule( + dtstart=datetime(1986, 1, 20), # First celebration + freq=rrule.YEARLY, # Occurs once per year + bymonth=1, # In January + byweekday=rrule.MO(+3), # On the 3rd Monday +) + +# -------------------------------# + +from datetime import datetime + +MLK_TEST_CASES = [ + ((datetime(1970, 1, 1), datetime(1980, 1, 1)), + []), + ((datetime(1980, 1, 1), datetime(1989, 1, 1)), + [datetime(1986, 1, 20), + datetime(1987, 1, 19), + datetime(1988, 1, 18)]), + ((datetime(2017, 2, 1), datetime(2022, 2, 1)), + [datetime(2018, 1, 15, 0, 0), + datetime(2019, 1, 21, 0, 0), + datetime(2020, 1, 20, 0, 0), + datetime(2021, 1, 18, 0, 0), + datetime(2022, 1, 17, 0, 0)] + ), +] + + +def test_mlk_day(): + for (between_args, expected) in MLK_TEST_CASES: + assert MLK_DAY.between(*between_args) == expected + + +if __name__ == "__main__": + test_mlk_day() + print('Success!') |