mirror of
https://github.com/PiBrewing/craftbeerpi4.git
synced 2024-11-30 10:44:14 +01:00
61 lines
1.9 KiB
Python
61 lines
1.9 KiB
Python
|
import warnings
|
||
|
|
||
|
import pytest
|
||
|
|
||
|
import pandas as pd
|
||
|
import pandas._testing as tm
|
||
|
|
||
|
from .base import BaseExtensionTests
|
||
|
|
||
|
|
||
|
class BaseReduceTests(BaseExtensionTests):
|
||
|
"""
|
||
|
Reduction specific tests. Generally these only
|
||
|
make sense for numeric/boolean operations.
|
||
|
"""
|
||
|
|
||
|
def check_reduce(self, s, op_name, skipna):
|
||
|
result = getattr(s, op_name)(skipna=skipna)
|
||
|
expected = getattr(s.astype("float64"), op_name)(skipna=skipna)
|
||
|
tm.assert_almost_equal(result, expected)
|
||
|
|
||
|
|
||
|
class BaseNoReduceTests(BaseReduceTests):
|
||
|
""" we don't define any reductions """
|
||
|
|
||
|
@pytest.mark.parametrize("skipna", [True, False])
|
||
|
def test_reduce_series_numeric(self, data, all_numeric_reductions, skipna):
|
||
|
op_name = all_numeric_reductions
|
||
|
s = pd.Series(data)
|
||
|
|
||
|
with pytest.raises(TypeError):
|
||
|
getattr(s, op_name)(skipna=skipna)
|
||
|
|
||
|
@pytest.mark.parametrize("skipna", [True, False])
|
||
|
def test_reduce_series_boolean(self, data, all_boolean_reductions, skipna):
|
||
|
op_name = all_boolean_reductions
|
||
|
s = pd.Series(data)
|
||
|
|
||
|
with pytest.raises(TypeError):
|
||
|
getattr(s, op_name)(skipna=skipna)
|
||
|
|
||
|
|
||
|
class BaseNumericReduceTests(BaseReduceTests):
|
||
|
@pytest.mark.parametrize("skipna", [True, False])
|
||
|
def test_reduce_series(self, data, all_numeric_reductions, skipna):
|
||
|
op_name = all_numeric_reductions
|
||
|
s = pd.Series(data)
|
||
|
|
||
|
# min/max with empty produce numpy warnings
|
||
|
with warnings.catch_warnings():
|
||
|
warnings.simplefilter("ignore", RuntimeWarning)
|
||
|
self.check_reduce(s, op_name, skipna)
|
||
|
|
||
|
|
||
|
class BaseBooleanReduceTests(BaseReduceTests):
|
||
|
@pytest.mark.parametrize("skipna", [True, False])
|
||
|
def test_reduce_series(self, data, all_boolean_reductions, skipna):
|
||
|
op_name = all_boolean_reductions
|
||
|
s = pd.Series(data)
|
||
|
self.check_reduce(s, op_name, skipna)
|