Skip to content

Commit

Permalink
TST: Collect/Use arithmetic test fixtures (pandas-dev#22645)
Browse files Browse the repository at this point in the history
  • Loading branch information
jbrockmendel authored and jreback committed Sep 12, 2018
1 parent a959ca2 commit 7ce722c
Show file tree
Hide file tree
Showing 5 changed files with 279 additions and 365 deletions.
100 changes: 98 additions & 2 deletions pandas/tests/arithmetic/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,32 @@ def zero(request):
return request.param


# ------------------------------------------------------------------
# Vector Fixtures

@pytest.fixture(params=[pd.Float64Index(np.arange(5, dtype='float64')),
pd.Int64Index(np.arange(5, dtype='int64')),
pd.UInt64Index(np.arange(5, dtype='uint64'))],
pd.UInt64Index(np.arange(5, dtype='uint64')),
pd.RangeIndex(5)],
ids=lambda x: type(x).__name__)
def idx(request):
def numeric_idx(request):
"""
Several types of numeric-dtypes Index objects
"""
return request.param


@pytest.fixture
def tdser():
"""
Return a Series with dtype='timedelta64[ns]', including a NaT.
"""
return pd.Series(['59 Days', '59 Days', 'NaT'], dtype='timedelta64[ns]')


# ------------------------------------------------------------------
# Scalar Fixtures

@pytest.fixture(params=[pd.Timedelta('5m4s').to_pytimedelta(),
pd.Timedelta('5m4s'),
pd.Timedelta('5m4s').to_timedelta64()],
Expand All @@ -47,6 +65,72 @@ def scalar_td(request):
return request.param


@pytest.fixture(params=[pd.offsets.Day(3),
pd.offsets.Hour(72),
pd.Timedelta(days=3).to_pytimedelta(),
pd.Timedelta('72:00:00'),
np.timedelta64(3, 'D'),
np.timedelta64(72, 'h')])
def three_days(request):
"""
Several timedelta-like and DateOffset objects that each represent
a 3-day timedelta
"""
return request.param


@pytest.fixture(params=[pd.offsets.Hour(2),
pd.offsets.Minute(120),
pd.Timedelta(hours=2).to_pytimedelta(),
pd.Timedelta(seconds=2 * 3600),
np.timedelta64(2, 'h'),
np.timedelta64(120, 'm')])
def two_hours(request):
"""
Several timedelta-like and DateOffset objects that each represent
a 2-hour timedelta
"""
return request.param


_common_mismatch = [pd.offsets.YearBegin(2),
pd.offsets.MonthBegin(1),
pd.offsets.Minute()]


@pytest.fixture(params=[pd.Timedelta(minutes=30).to_pytimedelta(),
np.timedelta64(30, 's'),
pd.Timedelta(seconds=30)] + _common_mismatch)
def not_hourly(request):
"""
Several timedelta-like and DateOffset instances that are _not_
compatible with Hourly frequencies.
"""
return request.param


@pytest.fixture(params=[np.timedelta64(4, 'h'),
pd.Timedelta(hours=23).to_pytimedelta(),
pd.Timedelta('23:00:00')] + _common_mismatch)
def not_daily(request):
"""
Several timedelta-like and DateOffset instances that are _not_
compatible with Daily frequencies.
"""
return request.param


@pytest.fixture(params=[np.timedelta64(365, 'D'),
pd.Timedelta(days=365).to_pytimedelta(),
pd.Timedelta(days=365)] + _common_mismatch)
def mismatched_freq(request):
"""
Several timedelta-like and DateOffset instances that are _not_
compatible with Monthly or Annual frequencies.
"""
return request.param


# ------------------------------------------------------------------

@pytest.fixture(params=[pd.Index, pd.Series, pd.DataFrame],
Expand All @@ -59,6 +143,18 @@ def box(request):
return request.param


@pytest.fixture(params=[pd.Index,
pd.Series,
pytest.param(pd.DataFrame,
marks=pytest.mark.xfail(strict=True))],
ids=lambda x: x.__name__)
def box_df_fail(request):
"""
Fixture equivalent to `box` fixture but xfailing the DataFrame case.
"""
return request.param


@pytest.fixture(params=[
pd.Index,
pd.Series,
Expand Down
Loading

0 comments on commit 7ce722c

Please sign in to comment.