From 8a12eae999e2971534040957fda4340b8c652c4b Mon Sep 17 00:00:00 2001 From: Brock Date: Tue, 13 Oct 2020 16:09:19 -0700 Subject: [PATCH] REF: share tests --- pandas/tests/frame/test_operators.py | 36 ----------------- pandas/tests/generic/test_logical_ops.py | 49 ++++++++++++++++++++++++ pandas/tests/series/test_operators.py | 36 ----------------- 3 files changed, 49 insertions(+), 72 deletions(-) create mode 100644 pandas/tests/generic/test_logical_ops.py diff --git a/pandas/tests/frame/test_operators.py b/pandas/tests/frame/test_operators.py index 8cf66e2737249..28c1e2a24bc4d 100644 --- a/pandas/tests/frame/test_operators.py +++ b/pandas/tests/frame/test_operators.py @@ -244,39 +244,3 @@ def test_logical_with_nas(self): result = d["a"].fillna(False, downcast=False) | d["b"] expected = Series([True, True]) tm.assert_series_equal(result, expected) - - @pytest.mark.parametrize( - "left, right, op, expected", - [ - ( - [True, False, np.nan], - [True, False, True], - operator.and_, - [True, False, False], - ), - ( - [True, False, True], - [True, False, np.nan], - operator.and_, - [True, False, False], - ), - ( - [True, False, np.nan], - [True, False, True], - operator.or_, - [True, False, False], - ), - ( - [True, False, True], - [True, False, np.nan], - operator.or_, - [True, False, True], - ), - ], - ) - def test_logical_operators_nans(self, left, right, op, expected): - # GH 13896 - result = op(DataFrame(left), DataFrame(right)) - expected = DataFrame(expected) - - tm.assert_frame_equal(result, expected) diff --git a/pandas/tests/generic/test_logical_ops.py b/pandas/tests/generic/test_logical_ops.py new file mode 100644 index 0000000000000..58185cbd9a40f --- /dev/null +++ b/pandas/tests/generic/test_logical_ops.py @@ -0,0 +1,49 @@ +""" +Shareable tests for &, |, ^ +""" +import operator + +import numpy as np +import pytest + +from pandas import DataFrame, Series +import pandas._testing as tm + + +class TestLogicalOps: + @pytest.mark.parametrize( + "left, right, op, expected", + [ + ( + [True, False, np.nan], + [True, False, True], + operator.and_, + [True, False, False], + ), + ( + [True, False, True], + [True, False, np.nan], + operator.and_, + [True, False, False], + ), + ( + [True, False, np.nan], + [True, False, True], + operator.or_, + [True, False, False], + ), + ( + [True, False, True], + [True, False, np.nan], + operator.or_, + [True, False, True], + ), + ], + ) + @pytest.mark.parametrize("klass", [Series, DataFrame]) + def test_logical_operators_nans(self, left, right, op, expected, klass): + # GH#13896 + result = op(klass(left), klass(right)) + expected = klass(expected) + + tm.assert_equal(result, expected) diff --git a/pandas/tests/series/test_operators.py b/pandas/tests/series/test_operators.py index df6b8187964e8..7629a472d6fca 100644 --- a/pandas/tests/series/test_operators.py +++ b/pandas/tests/series/test_operators.py @@ -42,42 +42,6 @@ def test_logical_operators_bool_dtype_with_empty(self): expected = s_tft tm.assert_series_equal(res, expected) - @pytest.mark.parametrize( - "left, right, op, expected", - [ - ( - [True, False, np.nan], - [True, False, True], - operator.and_, - [True, False, False], - ), - ( - [True, False, True], - [True, False, np.nan], - operator.and_, - [True, False, False], - ), - ( - [True, False, np.nan], - [True, False, True], - operator.or_, - [True, False, False], - ), - ( - [True, False, True], - [True, False, np.nan], - operator.or_, - [True, False, True], - ), - ], - ) - def test_logical_operators_nans(self, left, right, op, expected): - # GH 13896 - result = op(Series(left), Series(right)) - expected = Series(expected) - - tm.assert_series_equal(result, expected) - def test_logical_operators_int_dtype_with_int_dtype(self): # GH#9016: support bitwise op for integer types