12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import warnings
- import pytest
- import pandas as pd
- import pandas.util.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)
|