From 4e4ec6ee15147d9c77778d71f59bf0f6c9113a9c Mon Sep 17 00:00:00 2001 From: Felix Dulys Date: Wed, 11 Aug 2021 12:28:36 -0700 Subject: [PATCH] TST: move orphaned business hour tests biz hour file (#27085) --- .../tseries/offsets/test_business_hour.py | 448 +++++++++++++++++ .../tseries/offsets/test_opening_times.py | 456 ------------------ 2 files changed, 448 insertions(+), 456 deletions(-) delete mode 100644 pandas/tests/tseries/offsets/test_opening_times.py diff --git a/pandas/tests/tseries/offsets/test_business_hour.py b/pandas/tests/tseries/offsets/test_business_hour.py index 72b939b79c321..ee05eab5ec5ca 100644 --- a/pandas/tests/tseries/offsets/test_business_hour.py +++ b/pandas/tests/tseries/offsets/test_business_hour.py @@ -920,3 +920,451 @@ def test_bday_ignores_timedeltas(self): freq=None, ) tm.assert_index_equal(t1, expected) + + +class TestOpeningTimes: + # opening time should be affected by sign of n, not by n's value and end + opening_time_cases = [ + ( + [ + BusinessHour(), + BusinessHour(n=2), + BusinessHour(n=4), + BusinessHour(end="10:00"), + BusinessHour(n=2, end="4:00"), + BusinessHour(n=4, end="15:00"), + ], + { + datetime(2014, 7, 1, 11): ( + datetime(2014, 7, 2, 9), + datetime(2014, 7, 1, 9), + ), + datetime(2014, 7, 1, 18): ( + datetime(2014, 7, 2, 9), + datetime(2014, 7, 1, 9), + ), + datetime(2014, 7, 1, 23): ( + datetime(2014, 7, 2, 9), + datetime(2014, 7, 1, 9), + ), + datetime(2014, 7, 2, 8): ( + datetime(2014, 7, 2, 9), + datetime(2014, 7, 1, 9), + ), + # if timestamp is on opening time, next opening time is + # as it is + datetime(2014, 7, 2, 9): ( + datetime(2014, 7, 2, 9), + datetime(2014, 7, 2, 9), + ), + datetime(2014, 7, 2, 10): ( + datetime(2014, 7, 3, 9), + datetime(2014, 7, 2, 9), + ), + # 2014-07-05 is saturday + datetime(2014, 7, 5, 10): ( + datetime(2014, 7, 7, 9), + datetime(2014, 7, 4, 9), + ), + datetime(2014, 7, 4, 10): ( + datetime(2014, 7, 7, 9), + datetime(2014, 7, 4, 9), + ), + datetime(2014, 7, 4, 23): ( + datetime(2014, 7, 7, 9), + datetime(2014, 7, 4, 9), + ), + datetime(2014, 7, 6, 10): ( + datetime(2014, 7, 7, 9), + datetime(2014, 7, 4, 9), + ), + datetime(2014, 7, 7, 5): ( + datetime(2014, 7, 7, 9), + datetime(2014, 7, 4, 9), + ), + datetime(2014, 7, 7, 9, 1): ( + datetime(2014, 7, 8, 9), + datetime(2014, 7, 7, 9), + ), + }, + ), + ( + [ + BusinessHour(start="11:15"), + BusinessHour(n=2, start="11:15"), + BusinessHour(n=3, start="11:15"), + BusinessHour(start="11:15", end="10:00"), + BusinessHour(n=2, start="11:15", end="4:00"), + BusinessHour(n=3, start="11:15", end="15:00"), + ], + { + datetime(2014, 7, 1, 11): ( + datetime(2014, 7, 1, 11, 15), + datetime(2014, 6, 30, 11, 15), + ), + datetime(2014, 7, 1, 18): ( + datetime(2014, 7, 2, 11, 15), + datetime(2014, 7, 1, 11, 15), + ), + datetime(2014, 7, 1, 23): ( + datetime(2014, 7, 2, 11, 15), + datetime(2014, 7, 1, 11, 15), + ), + datetime(2014, 7, 2, 8): ( + datetime(2014, 7, 2, 11, 15), + datetime(2014, 7, 1, 11, 15), + ), + datetime(2014, 7, 2, 9): ( + datetime(2014, 7, 2, 11, 15), + datetime(2014, 7, 1, 11, 15), + ), + datetime(2014, 7, 2, 10): ( + datetime(2014, 7, 2, 11, 15), + datetime(2014, 7, 1, 11, 15), + ), + datetime(2014, 7, 2, 11, 15): ( + datetime(2014, 7, 2, 11, 15), + datetime(2014, 7, 2, 11, 15), + ), + datetime(2014, 7, 2, 11, 15, 1): ( + datetime(2014, 7, 3, 11, 15), + datetime(2014, 7, 2, 11, 15), + ), + datetime(2014, 7, 5, 10): ( + datetime(2014, 7, 7, 11, 15), + datetime(2014, 7, 4, 11, 15), + ), + datetime(2014, 7, 4, 10): ( + datetime(2014, 7, 4, 11, 15), + datetime(2014, 7, 3, 11, 15), + ), + datetime(2014, 7, 4, 23): ( + datetime(2014, 7, 7, 11, 15), + datetime(2014, 7, 4, 11, 15), + ), + datetime(2014, 7, 6, 10): ( + datetime(2014, 7, 7, 11, 15), + datetime(2014, 7, 4, 11, 15), + ), + datetime(2014, 7, 7, 5): ( + datetime(2014, 7, 7, 11, 15), + datetime(2014, 7, 4, 11, 15), + ), + datetime(2014, 7, 7, 9, 1): ( + datetime(2014, 7, 7, 11, 15), + datetime(2014, 7, 4, 11, 15), + ), + }, + ), + ( + [ + BusinessHour(-1), + BusinessHour(n=-2), + BusinessHour(n=-4), + BusinessHour(n=-1, end="10:00"), + BusinessHour(n=-2, end="4:00"), + BusinessHour(n=-4, end="15:00"), + ], + { + datetime(2014, 7, 1, 11): ( + datetime(2014, 7, 1, 9), + datetime(2014, 7, 2, 9), + ), + datetime(2014, 7, 1, 18): ( + datetime(2014, 7, 1, 9), + datetime(2014, 7, 2, 9), + ), + datetime(2014, 7, 1, 23): ( + datetime(2014, 7, 1, 9), + datetime(2014, 7, 2, 9), + ), + datetime(2014, 7, 2, 8): ( + datetime(2014, 7, 1, 9), + datetime(2014, 7, 2, 9), + ), + datetime(2014, 7, 2, 9): ( + datetime(2014, 7, 2, 9), + datetime(2014, 7, 2, 9), + ), + datetime(2014, 7, 2, 10): ( + datetime(2014, 7, 2, 9), + datetime(2014, 7, 3, 9), + ), + datetime(2014, 7, 5, 10): ( + datetime(2014, 7, 4, 9), + datetime(2014, 7, 7, 9), + ), + datetime(2014, 7, 4, 10): ( + datetime(2014, 7, 4, 9), + datetime(2014, 7, 7, 9), + ), + datetime(2014, 7, 4, 23): ( + datetime(2014, 7, 4, 9), + datetime(2014, 7, 7, 9), + ), + datetime(2014, 7, 6, 10): ( + datetime(2014, 7, 4, 9), + datetime(2014, 7, 7, 9), + ), + datetime(2014, 7, 7, 5): ( + datetime(2014, 7, 4, 9), + datetime(2014, 7, 7, 9), + ), + datetime(2014, 7, 7, 9): ( + datetime(2014, 7, 7, 9), + datetime(2014, 7, 7, 9), + ), + datetime(2014, 7, 7, 9, 1): ( + datetime(2014, 7, 7, 9), + datetime(2014, 7, 8, 9), + ), + }, + ), + ( + [ + BusinessHour(start="17:00", end="05:00"), + BusinessHour(n=3, start="17:00", end="03:00"), + ], + { + datetime(2014, 7, 1, 11): ( + datetime(2014, 7, 1, 17), + datetime(2014, 6, 30, 17), + ), + datetime(2014, 7, 1, 18): ( + datetime(2014, 7, 2, 17), + datetime(2014, 7, 1, 17), + ), + datetime(2014, 7, 1, 23): ( + datetime(2014, 7, 2, 17), + datetime(2014, 7, 1, 17), + ), + datetime(2014, 7, 2, 8): ( + datetime(2014, 7, 2, 17), + datetime(2014, 7, 1, 17), + ), + datetime(2014, 7, 2, 9): ( + datetime(2014, 7, 2, 17), + datetime(2014, 7, 1, 17), + ), + datetime(2014, 7, 4, 17): ( + datetime(2014, 7, 4, 17), + datetime(2014, 7, 4, 17), + ), + datetime(2014, 7, 5, 10): ( + datetime(2014, 7, 7, 17), + datetime(2014, 7, 4, 17), + ), + datetime(2014, 7, 4, 10): ( + datetime(2014, 7, 4, 17), + datetime(2014, 7, 3, 17), + ), + datetime(2014, 7, 4, 23): ( + datetime(2014, 7, 7, 17), + datetime(2014, 7, 4, 17), + ), + datetime(2014, 7, 6, 10): ( + datetime(2014, 7, 7, 17), + datetime(2014, 7, 4, 17), + ), + datetime(2014, 7, 7, 5): ( + datetime(2014, 7, 7, 17), + datetime(2014, 7, 4, 17), + ), + datetime(2014, 7, 7, 17, 1): ( + datetime(2014, 7, 8, 17), + datetime(2014, 7, 7, 17), + ), + }, + ), + ( + [ + BusinessHour(-1, start="17:00", end="05:00"), + BusinessHour(n=-2, start="17:00", end="03:00"), + ], + { + datetime(2014, 7, 1, 11): ( + datetime(2014, 6, 30, 17), + datetime(2014, 7, 1, 17), + ), + datetime(2014, 7, 1, 18): ( + datetime(2014, 7, 1, 17), + datetime(2014, 7, 2, 17), + ), + datetime(2014, 7, 1, 23): ( + datetime(2014, 7, 1, 17), + datetime(2014, 7, 2, 17), + ), + datetime(2014, 7, 2, 8): ( + datetime(2014, 7, 1, 17), + datetime(2014, 7, 2, 17), + ), + datetime(2014, 7, 2, 9): ( + datetime(2014, 7, 1, 17), + datetime(2014, 7, 2, 17), + ), + datetime(2014, 7, 2, 16, 59): ( + datetime(2014, 7, 1, 17), + datetime(2014, 7, 2, 17), + ), + datetime(2014, 7, 5, 10): ( + datetime(2014, 7, 4, 17), + datetime(2014, 7, 7, 17), + ), + datetime(2014, 7, 4, 10): ( + datetime(2014, 7, 3, 17), + datetime(2014, 7, 4, 17), + ), + datetime(2014, 7, 4, 23): ( + datetime(2014, 7, 4, 17), + datetime(2014, 7, 7, 17), + ), + datetime(2014, 7, 6, 10): ( + datetime(2014, 7, 4, 17), + datetime(2014, 7, 7, 17), + ), + datetime(2014, 7, 7, 5): ( + datetime(2014, 7, 4, 17), + datetime(2014, 7, 7, 17), + ), + datetime(2014, 7, 7, 18): ( + datetime(2014, 7, 7, 17), + datetime(2014, 7, 8, 17), + ), + }, + ), + ( + [ + BusinessHour(start=["11:15", "15:00"], end=["13:00", "20:00"]), + BusinessHour(n=3, start=["11:15", "15:00"], end=["12:00", "20:00"]), + BusinessHour(start=["11:15", "15:00"], end=["13:00", "17:00"]), + BusinessHour(n=2, start=["11:15", "15:00"], end=["12:00", "03:00"]), + BusinessHour(n=3, start=["11:15", "15:00"], end=["13:00", "16:00"]), + ], + { + datetime(2014, 7, 1, 11): ( + datetime(2014, 7, 1, 11, 15), + datetime(2014, 6, 30, 15), + ), + datetime(2014, 7, 1, 18): ( + datetime(2014, 7, 2, 11, 15), + datetime(2014, 7, 1, 15), + ), + datetime(2014, 7, 1, 23): ( + datetime(2014, 7, 2, 11, 15), + datetime(2014, 7, 1, 15), + ), + datetime(2014, 7, 2, 8): ( + datetime(2014, 7, 2, 11, 15), + datetime(2014, 7, 1, 15), + ), + datetime(2014, 7, 2, 9): ( + datetime(2014, 7, 2, 11, 15), + datetime(2014, 7, 1, 15), + ), + datetime(2014, 7, 2, 10): ( + datetime(2014, 7, 2, 11, 15), + datetime(2014, 7, 1, 15), + ), + datetime(2014, 7, 2, 11, 15): ( + datetime(2014, 7, 2, 11, 15), + datetime(2014, 7, 2, 11, 15), + ), + datetime(2014, 7, 2, 11, 15, 1): ( + datetime(2014, 7, 2, 15), + datetime(2014, 7, 2, 11, 15), + ), + datetime(2014, 7, 5, 10): ( + datetime(2014, 7, 7, 11, 15), + datetime(2014, 7, 4, 15), + ), + datetime(2014, 7, 4, 10): ( + datetime(2014, 7, 4, 11, 15), + datetime(2014, 7, 3, 15), + ), + datetime(2014, 7, 4, 23): ( + datetime(2014, 7, 7, 11, 15), + datetime(2014, 7, 4, 15), + ), + datetime(2014, 7, 6, 10): ( + datetime(2014, 7, 7, 11, 15), + datetime(2014, 7, 4, 15), + ), + datetime(2014, 7, 7, 5): ( + datetime(2014, 7, 7, 11, 15), + datetime(2014, 7, 4, 15), + ), + datetime(2014, 7, 7, 9, 1): ( + datetime(2014, 7, 7, 11, 15), + datetime(2014, 7, 4, 15), + ), + datetime(2014, 7, 7, 12): ( + datetime(2014, 7, 7, 15), + datetime(2014, 7, 7, 11, 15), + ), + }, + ), + ( + [ + BusinessHour(n=-1, start=["17:00", "08:00"], end=["05:00", "10:00"]), + BusinessHour(n=-2, start=["08:00", "17:00"], end=["10:00", "03:00"]), + ], + { + datetime(2014, 7, 1, 11): ( + datetime(2014, 7, 1, 8), + datetime(2014, 7, 1, 17), + ), + datetime(2014, 7, 1, 18): ( + datetime(2014, 7, 1, 17), + datetime(2014, 7, 2, 8), + ), + datetime(2014, 7, 1, 23): ( + datetime(2014, 7, 1, 17), + datetime(2014, 7, 2, 8), + ), + datetime(2014, 7, 2, 8): ( + datetime(2014, 7, 2, 8), + datetime(2014, 7, 2, 8), + ), + datetime(2014, 7, 2, 9): ( + datetime(2014, 7, 2, 8), + datetime(2014, 7, 2, 17), + ), + datetime(2014, 7, 2, 16, 59): ( + datetime(2014, 7, 2, 8), + datetime(2014, 7, 2, 17), + ), + datetime(2014, 7, 5, 10): ( + datetime(2014, 7, 4, 17), + datetime(2014, 7, 7, 8), + ), + datetime(2014, 7, 4, 10): ( + datetime(2014, 7, 4, 8), + datetime(2014, 7, 4, 17), + ), + datetime(2014, 7, 4, 23): ( + datetime(2014, 7, 4, 17), + datetime(2014, 7, 7, 8), + ), + datetime(2014, 7, 6, 10): ( + datetime(2014, 7, 4, 17), + datetime(2014, 7, 7, 8), + ), + datetime(2014, 7, 7, 5): ( + datetime(2014, 7, 4, 17), + datetime(2014, 7, 7, 8), + ), + datetime(2014, 7, 7, 18): ( + datetime(2014, 7, 7, 17), + datetime(2014, 7, 8, 8), + ), + }, + ), + ] + + @pytest.mark.parametrize("case", opening_time_cases) + def test_opening_time(self, case): + _offsets, cases = case + for offset in _offsets: + for dt, (exp_next, exp_prev) in cases.items(): + assert offset._next_opening_time(dt) == exp_next + assert offset._prev_opening_time(dt) == exp_prev diff --git a/pandas/tests/tseries/offsets/test_opening_times.py b/pandas/tests/tseries/offsets/test_opening_times.py deleted file mode 100644 index 107436e4b3343..0000000000000 --- a/pandas/tests/tseries/offsets/test_opening_times.py +++ /dev/null @@ -1,456 +0,0 @@ -""" -Test offset.BusinessHour._next_opening_time and offset.BusinessHour._prev_opening_time -""" -from datetime import datetime - -import pytest - -from pandas._libs.tslibs.offsets import BusinessHour - - -class TestOpeningTimes: - # opening time should be affected by sign of n, not by n's value and end - opening_time_cases = [ - ( - [ - BusinessHour(), - BusinessHour(n=2), - BusinessHour(n=4), - BusinessHour(end="10:00"), - BusinessHour(n=2, end="4:00"), - BusinessHour(n=4, end="15:00"), - ], - { - datetime(2014, 7, 1, 11): ( - datetime(2014, 7, 2, 9), - datetime(2014, 7, 1, 9), - ), - datetime(2014, 7, 1, 18): ( - datetime(2014, 7, 2, 9), - datetime(2014, 7, 1, 9), - ), - datetime(2014, 7, 1, 23): ( - datetime(2014, 7, 2, 9), - datetime(2014, 7, 1, 9), - ), - datetime(2014, 7, 2, 8): ( - datetime(2014, 7, 2, 9), - datetime(2014, 7, 1, 9), - ), - # if timestamp is on opening time, next opening time is - # as it is - datetime(2014, 7, 2, 9): ( - datetime(2014, 7, 2, 9), - datetime(2014, 7, 2, 9), - ), - datetime(2014, 7, 2, 10): ( - datetime(2014, 7, 3, 9), - datetime(2014, 7, 2, 9), - ), - # 2014-07-05 is saturday - datetime(2014, 7, 5, 10): ( - datetime(2014, 7, 7, 9), - datetime(2014, 7, 4, 9), - ), - datetime(2014, 7, 4, 10): ( - datetime(2014, 7, 7, 9), - datetime(2014, 7, 4, 9), - ), - datetime(2014, 7, 4, 23): ( - datetime(2014, 7, 7, 9), - datetime(2014, 7, 4, 9), - ), - datetime(2014, 7, 6, 10): ( - datetime(2014, 7, 7, 9), - datetime(2014, 7, 4, 9), - ), - datetime(2014, 7, 7, 5): ( - datetime(2014, 7, 7, 9), - datetime(2014, 7, 4, 9), - ), - datetime(2014, 7, 7, 9, 1): ( - datetime(2014, 7, 8, 9), - datetime(2014, 7, 7, 9), - ), - }, - ), - ( - [ - BusinessHour(start="11:15"), - BusinessHour(n=2, start="11:15"), - BusinessHour(n=3, start="11:15"), - BusinessHour(start="11:15", end="10:00"), - BusinessHour(n=2, start="11:15", end="4:00"), - BusinessHour(n=3, start="11:15", end="15:00"), - ], - { - datetime(2014, 7, 1, 11): ( - datetime(2014, 7, 1, 11, 15), - datetime(2014, 6, 30, 11, 15), - ), - datetime(2014, 7, 1, 18): ( - datetime(2014, 7, 2, 11, 15), - datetime(2014, 7, 1, 11, 15), - ), - datetime(2014, 7, 1, 23): ( - datetime(2014, 7, 2, 11, 15), - datetime(2014, 7, 1, 11, 15), - ), - datetime(2014, 7, 2, 8): ( - datetime(2014, 7, 2, 11, 15), - datetime(2014, 7, 1, 11, 15), - ), - datetime(2014, 7, 2, 9): ( - datetime(2014, 7, 2, 11, 15), - datetime(2014, 7, 1, 11, 15), - ), - datetime(2014, 7, 2, 10): ( - datetime(2014, 7, 2, 11, 15), - datetime(2014, 7, 1, 11, 15), - ), - datetime(2014, 7, 2, 11, 15): ( - datetime(2014, 7, 2, 11, 15), - datetime(2014, 7, 2, 11, 15), - ), - datetime(2014, 7, 2, 11, 15, 1): ( - datetime(2014, 7, 3, 11, 15), - datetime(2014, 7, 2, 11, 15), - ), - datetime(2014, 7, 5, 10): ( - datetime(2014, 7, 7, 11, 15), - datetime(2014, 7, 4, 11, 15), - ), - datetime(2014, 7, 4, 10): ( - datetime(2014, 7, 4, 11, 15), - datetime(2014, 7, 3, 11, 15), - ), - datetime(2014, 7, 4, 23): ( - datetime(2014, 7, 7, 11, 15), - datetime(2014, 7, 4, 11, 15), - ), - datetime(2014, 7, 6, 10): ( - datetime(2014, 7, 7, 11, 15), - datetime(2014, 7, 4, 11, 15), - ), - datetime(2014, 7, 7, 5): ( - datetime(2014, 7, 7, 11, 15), - datetime(2014, 7, 4, 11, 15), - ), - datetime(2014, 7, 7, 9, 1): ( - datetime(2014, 7, 7, 11, 15), - datetime(2014, 7, 4, 11, 15), - ), - }, - ), - ( - [ - BusinessHour(-1), - BusinessHour(n=-2), - BusinessHour(n=-4), - BusinessHour(n=-1, end="10:00"), - BusinessHour(n=-2, end="4:00"), - BusinessHour(n=-4, end="15:00"), - ], - { - datetime(2014, 7, 1, 11): ( - datetime(2014, 7, 1, 9), - datetime(2014, 7, 2, 9), - ), - datetime(2014, 7, 1, 18): ( - datetime(2014, 7, 1, 9), - datetime(2014, 7, 2, 9), - ), - datetime(2014, 7, 1, 23): ( - datetime(2014, 7, 1, 9), - datetime(2014, 7, 2, 9), - ), - datetime(2014, 7, 2, 8): ( - datetime(2014, 7, 1, 9), - datetime(2014, 7, 2, 9), - ), - datetime(2014, 7, 2, 9): ( - datetime(2014, 7, 2, 9), - datetime(2014, 7, 2, 9), - ), - datetime(2014, 7, 2, 10): ( - datetime(2014, 7, 2, 9), - datetime(2014, 7, 3, 9), - ), - datetime(2014, 7, 5, 10): ( - datetime(2014, 7, 4, 9), - datetime(2014, 7, 7, 9), - ), - datetime(2014, 7, 4, 10): ( - datetime(2014, 7, 4, 9), - datetime(2014, 7, 7, 9), - ), - datetime(2014, 7, 4, 23): ( - datetime(2014, 7, 4, 9), - datetime(2014, 7, 7, 9), - ), - datetime(2014, 7, 6, 10): ( - datetime(2014, 7, 4, 9), - datetime(2014, 7, 7, 9), - ), - datetime(2014, 7, 7, 5): ( - datetime(2014, 7, 4, 9), - datetime(2014, 7, 7, 9), - ), - datetime(2014, 7, 7, 9): ( - datetime(2014, 7, 7, 9), - datetime(2014, 7, 7, 9), - ), - datetime(2014, 7, 7, 9, 1): ( - datetime(2014, 7, 7, 9), - datetime(2014, 7, 8, 9), - ), - }, - ), - ( - [ - BusinessHour(start="17:00", end="05:00"), - BusinessHour(n=3, start="17:00", end="03:00"), - ], - { - datetime(2014, 7, 1, 11): ( - datetime(2014, 7, 1, 17), - datetime(2014, 6, 30, 17), - ), - datetime(2014, 7, 1, 18): ( - datetime(2014, 7, 2, 17), - datetime(2014, 7, 1, 17), - ), - datetime(2014, 7, 1, 23): ( - datetime(2014, 7, 2, 17), - datetime(2014, 7, 1, 17), - ), - datetime(2014, 7, 2, 8): ( - datetime(2014, 7, 2, 17), - datetime(2014, 7, 1, 17), - ), - datetime(2014, 7, 2, 9): ( - datetime(2014, 7, 2, 17), - datetime(2014, 7, 1, 17), - ), - datetime(2014, 7, 4, 17): ( - datetime(2014, 7, 4, 17), - datetime(2014, 7, 4, 17), - ), - datetime(2014, 7, 5, 10): ( - datetime(2014, 7, 7, 17), - datetime(2014, 7, 4, 17), - ), - datetime(2014, 7, 4, 10): ( - datetime(2014, 7, 4, 17), - datetime(2014, 7, 3, 17), - ), - datetime(2014, 7, 4, 23): ( - datetime(2014, 7, 7, 17), - datetime(2014, 7, 4, 17), - ), - datetime(2014, 7, 6, 10): ( - datetime(2014, 7, 7, 17), - datetime(2014, 7, 4, 17), - ), - datetime(2014, 7, 7, 5): ( - datetime(2014, 7, 7, 17), - datetime(2014, 7, 4, 17), - ), - datetime(2014, 7, 7, 17, 1): ( - datetime(2014, 7, 8, 17), - datetime(2014, 7, 7, 17), - ), - }, - ), - ( - [ - BusinessHour(-1, start="17:00", end="05:00"), - BusinessHour(n=-2, start="17:00", end="03:00"), - ], - { - datetime(2014, 7, 1, 11): ( - datetime(2014, 6, 30, 17), - datetime(2014, 7, 1, 17), - ), - datetime(2014, 7, 1, 18): ( - datetime(2014, 7, 1, 17), - datetime(2014, 7, 2, 17), - ), - datetime(2014, 7, 1, 23): ( - datetime(2014, 7, 1, 17), - datetime(2014, 7, 2, 17), - ), - datetime(2014, 7, 2, 8): ( - datetime(2014, 7, 1, 17), - datetime(2014, 7, 2, 17), - ), - datetime(2014, 7, 2, 9): ( - datetime(2014, 7, 1, 17), - datetime(2014, 7, 2, 17), - ), - datetime(2014, 7, 2, 16, 59): ( - datetime(2014, 7, 1, 17), - datetime(2014, 7, 2, 17), - ), - datetime(2014, 7, 5, 10): ( - datetime(2014, 7, 4, 17), - datetime(2014, 7, 7, 17), - ), - datetime(2014, 7, 4, 10): ( - datetime(2014, 7, 3, 17), - datetime(2014, 7, 4, 17), - ), - datetime(2014, 7, 4, 23): ( - datetime(2014, 7, 4, 17), - datetime(2014, 7, 7, 17), - ), - datetime(2014, 7, 6, 10): ( - datetime(2014, 7, 4, 17), - datetime(2014, 7, 7, 17), - ), - datetime(2014, 7, 7, 5): ( - datetime(2014, 7, 4, 17), - datetime(2014, 7, 7, 17), - ), - datetime(2014, 7, 7, 18): ( - datetime(2014, 7, 7, 17), - datetime(2014, 7, 8, 17), - ), - }, - ), - ( - [ - BusinessHour(start=["11:15", "15:00"], end=["13:00", "20:00"]), - BusinessHour(n=3, start=["11:15", "15:00"], end=["12:00", "20:00"]), - BusinessHour(start=["11:15", "15:00"], end=["13:00", "17:00"]), - BusinessHour(n=2, start=["11:15", "15:00"], end=["12:00", "03:00"]), - BusinessHour(n=3, start=["11:15", "15:00"], end=["13:00", "16:00"]), - ], - { - datetime(2014, 7, 1, 11): ( - datetime(2014, 7, 1, 11, 15), - datetime(2014, 6, 30, 15), - ), - datetime(2014, 7, 1, 18): ( - datetime(2014, 7, 2, 11, 15), - datetime(2014, 7, 1, 15), - ), - datetime(2014, 7, 1, 23): ( - datetime(2014, 7, 2, 11, 15), - datetime(2014, 7, 1, 15), - ), - datetime(2014, 7, 2, 8): ( - datetime(2014, 7, 2, 11, 15), - datetime(2014, 7, 1, 15), - ), - datetime(2014, 7, 2, 9): ( - datetime(2014, 7, 2, 11, 15), - datetime(2014, 7, 1, 15), - ), - datetime(2014, 7, 2, 10): ( - datetime(2014, 7, 2, 11, 15), - datetime(2014, 7, 1, 15), - ), - datetime(2014, 7, 2, 11, 15): ( - datetime(2014, 7, 2, 11, 15), - datetime(2014, 7, 2, 11, 15), - ), - datetime(2014, 7, 2, 11, 15, 1): ( - datetime(2014, 7, 2, 15), - datetime(2014, 7, 2, 11, 15), - ), - datetime(2014, 7, 5, 10): ( - datetime(2014, 7, 7, 11, 15), - datetime(2014, 7, 4, 15), - ), - datetime(2014, 7, 4, 10): ( - datetime(2014, 7, 4, 11, 15), - datetime(2014, 7, 3, 15), - ), - datetime(2014, 7, 4, 23): ( - datetime(2014, 7, 7, 11, 15), - datetime(2014, 7, 4, 15), - ), - datetime(2014, 7, 6, 10): ( - datetime(2014, 7, 7, 11, 15), - datetime(2014, 7, 4, 15), - ), - datetime(2014, 7, 7, 5): ( - datetime(2014, 7, 7, 11, 15), - datetime(2014, 7, 4, 15), - ), - datetime(2014, 7, 7, 9, 1): ( - datetime(2014, 7, 7, 11, 15), - datetime(2014, 7, 4, 15), - ), - datetime(2014, 7, 7, 12): ( - datetime(2014, 7, 7, 15), - datetime(2014, 7, 7, 11, 15), - ), - }, - ), - ( - [ - BusinessHour(n=-1, start=["17:00", "08:00"], end=["05:00", "10:00"]), - BusinessHour(n=-2, start=["08:00", "17:00"], end=["10:00", "03:00"]), - ], - { - datetime(2014, 7, 1, 11): ( - datetime(2014, 7, 1, 8), - datetime(2014, 7, 1, 17), - ), - datetime(2014, 7, 1, 18): ( - datetime(2014, 7, 1, 17), - datetime(2014, 7, 2, 8), - ), - datetime(2014, 7, 1, 23): ( - datetime(2014, 7, 1, 17), - datetime(2014, 7, 2, 8), - ), - datetime(2014, 7, 2, 8): ( - datetime(2014, 7, 2, 8), - datetime(2014, 7, 2, 8), - ), - datetime(2014, 7, 2, 9): ( - datetime(2014, 7, 2, 8), - datetime(2014, 7, 2, 17), - ), - datetime(2014, 7, 2, 16, 59): ( - datetime(2014, 7, 2, 8), - datetime(2014, 7, 2, 17), - ), - datetime(2014, 7, 5, 10): ( - datetime(2014, 7, 4, 17), - datetime(2014, 7, 7, 8), - ), - datetime(2014, 7, 4, 10): ( - datetime(2014, 7, 4, 8), - datetime(2014, 7, 4, 17), - ), - datetime(2014, 7, 4, 23): ( - datetime(2014, 7, 4, 17), - datetime(2014, 7, 7, 8), - ), - datetime(2014, 7, 6, 10): ( - datetime(2014, 7, 4, 17), - datetime(2014, 7, 7, 8), - ), - datetime(2014, 7, 7, 5): ( - datetime(2014, 7, 4, 17), - datetime(2014, 7, 7, 8), - ), - datetime(2014, 7, 7, 18): ( - datetime(2014, 7, 7, 17), - datetime(2014, 7, 8, 8), - ), - }, - ), - ] - - @pytest.mark.parametrize("case", opening_time_cases) - def test_opening_time(self, case): - _offsets, cases = case - for offset in _offsets: - for dt, (exp_next, exp_prev) in cases.items(): - assert offset._next_opening_time(dt) == exp_next - assert offset._prev_opening_time(dt) == exp_prev