106 lines
2.7 KiB
Python
106 lines
2.7 KiB
Python
|
from datetime import datetime
|
||
|
|
||
|
import pytest
|
||
|
|
||
|
from pandas.tseries.holiday import (
|
||
|
after_nearest_workday,
|
||
|
before_nearest_workday,
|
||
|
nearest_workday,
|
||
|
next_monday,
|
||
|
next_monday_or_tuesday,
|
||
|
next_workday,
|
||
|
previous_friday,
|
||
|
previous_workday,
|
||
|
sunday_to_monday,
|
||
|
weekend_to_monday,
|
||
|
)
|
||
|
|
||
|
_WEDNESDAY = datetime(2014, 4, 9)
|
||
|
_THURSDAY = datetime(2014, 4, 10)
|
||
|
_FRIDAY = datetime(2014, 4, 11)
|
||
|
_SATURDAY = datetime(2014, 4, 12)
|
||
|
_SUNDAY = datetime(2014, 4, 13)
|
||
|
_MONDAY = datetime(2014, 4, 14)
|
||
|
_TUESDAY = datetime(2014, 4, 15)
|
||
|
_NEXT_WEDNESDAY = datetime(2014, 4, 16)
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize("day", [_SATURDAY, _SUNDAY])
|
||
|
def test_next_monday(day):
|
||
|
assert next_monday(day) == _MONDAY
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize(
|
||
|
"day,expected", [(_SATURDAY, _MONDAY), (_SUNDAY, _TUESDAY), (_MONDAY, _TUESDAY)]
|
||
|
)
|
||
|
def test_next_monday_or_tuesday(day, expected):
|
||
|
assert next_monday_or_tuesday(day) == expected
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize("day", [_SATURDAY, _SUNDAY])
|
||
|
def test_previous_friday(day):
|
||
|
assert previous_friday(day) == _FRIDAY
|
||
|
|
||
|
|
||
|
def test_sunday_to_monday():
|
||
|
assert sunday_to_monday(_SUNDAY) == _MONDAY
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize(
|
||
|
"day,expected", [(_SATURDAY, _FRIDAY), (_SUNDAY, _MONDAY), (_MONDAY, _MONDAY)]
|
||
|
)
|
||
|
def test_nearest_workday(day, expected):
|
||
|
assert nearest_workday(day) == expected
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize(
|
||
|
"day,expected", [(_SATURDAY, _MONDAY), (_SUNDAY, _MONDAY), (_MONDAY, _MONDAY)]
|
||
|
)
|
||
|
def test_weekend_to_monday(day, expected):
|
||
|
assert weekend_to_monday(day) == expected
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize(
|
||
|
"day,expected",
|
||
|
[
|
||
|
(_WEDNESDAY, _THURSDAY),
|
||
|
(_THURSDAY, _FRIDAY),
|
||
|
(_SATURDAY, _MONDAY),
|
||
|
(_SUNDAY, _MONDAY),
|
||
|
(_MONDAY, _TUESDAY),
|
||
|
(_TUESDAY, _NEXT_WEDNESDAY), # WED is same week as TUE
|
||
|
],
|
||
|
)
|
||
|
def test_next_workday(day, expected):
|
||
|
assert next_workday(day) == expected
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize(
|
||
|
"day,expected", [(_SATURDAY, _FRIDAY), (_SUNDAY, _FRIDAY), (_TUESDAY, _MONDAY)]
|
||
|
)
|
||
|
def test_previous_workday(day, expected):
|
||
|
assert previous_workday(day) == expected
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize(
|
||
|
"day,expected",
|
||
|
[
|
||
|
(_THURSDAY, _WEDNESDAY),
|
||
|
(_FRIDAY, _THURSDAY),
|
||
|
(_SATURDAY, _THURSDAY),
|
||
|
(_SUNDAY, _FRIDAY),
|
||
|
(_MONDAY, _FRIDAY), # last week Friday
|
||
|
(_TUESDAY, _MONDAY),
|
||
|
(_NEXT_WEDNESDAY, _TUESDAY), # WED is same week as TUE
|
||
|
],
|
||
|
)
|
||
|
def test_before_nearest_workday(day, expected):
|
||
|
assert before_nearest_workday(day) == expected
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize(
|
||
|
"day,expected", [(_SATURDAY, _MONDAY), (_SUNDAY, _TUESDAY), (_FRIDAY, _MONDAY)]
|
||
|
)
|
||
|
def test_after_nearest_workday(day, expected):
|
||
|
assert after_nearest_workday(day) == expected
|