From befa6906119b58537c7661ad6ad9f765805e3242 Mon Sep 17 00:00:00 2001 From: Martin Winkel Date: Fri, 6 Dec 2019 17:05:01 +0100 Subject: [PATCH] moved mixins to the location where they are used --- pandas/tests/indexes/test_frozen.py | 63 ++++++++++++++++++++++++++++- pandas/tests/test_base.py | 59 --------------------------- 2 files changed, 61 insertions(+), 61 deletions(-) diff --git a/pandas/tests/indexes/test_frozen.py b/pandas/tests/indexes/test_frozen.py index 9f6b0325b7b33..40f69ee868a90 100644 --- a/pandas/tests/indexes/test_frozen.py +++ b/pandas/tests/indexes/test_frozen.py @@ -1,10 +1,69 @@ +import re + import pytest from pandas.core.indexes.frozen import FrozenList -from pandas.tests.test_base import CheckImmutable, CheckStringMixin -class TestFrozenList(CheckImmutable, CheckStringMixin): +class CheckImmutableMixin: + mutable_regex = re.compile("does not support mutable operations") + + def check_mutable_error(self, *args, **kwargs): + # Pass whatever function you normally would to pytest.raises + # (after the Exception kind). + with pytest.raises(TypeError): + self.mutable_regex(*args, **kwargs) + + def test_no_mutable_funcs(self): + def setitem(): + self.container[0] = 5 + + self.check_mutable_error(setitem) + + def setslice(): + self.container[1:2] = 3 + + self.check_mutable_error(setslice) + + def delitem(): + del self.container[0] + + self.check_mutable_error(delitem) + + def delslice(): + del self.container[0:3] + + self.check_mutable_error(delslice) + mutable_methods = getattr(self, "mutable_methods", []) + + for meth in mutable_methods: + self.check_mutable_error(getattr(self.container, meth)) + + def test_slicing_maintains_type(self): + result = self.container[1:2] + expected = self.lst[1:2] + self.check_result(result, expected) + + def check_result(self, result, expected, klass=None): + klass = klass or self.klass + assert isinstance(result, klass) + assert result == expected + + +class CheckStringMixin: + def test_string_methods_dont_fail(self): + repr(self.container) + str(self.container) + bytes(self.container) + + def test_tricky_container(self): + if not hasattr(self, "unicode_container"): + pytest.skip("Need unicode_container to test with this") + repr(self.unicode_container) + str(self.unicode_container) + + +class TestFrozenList(CheckImmutableMixin, CheckStringMixin): mutable_methods = ("extend", "pop", "remove", "insert") unicode_container = FrozenList(["\u05d0", "\u05d1", "c"]) diff --git a/pandas/tests/test_base.py b/pandas/tests/test_base.py index 5c9a119400319..6e5f5b729d102 100644 --- a/pandas/tests/test_base.py +++ b/pandas/tests/test_base.py @@ -1,6 +1,5 @@ from datetime import datetime, timedelta from io import StringIO -import re import sys import numpy as np @@ -40,64 +39,6 @@ import pandas.util.testing as tm -class CheckStringMixin: - def test_string_methods_dont_fail(self): - repr(self.container) - str(self.container) - bytes(self.container) - - def test_tricky_container(self): - if not hasattr(self, "unicode_container"): - pytest.skip("Need unicode_container to test with this") - repr(self.unicode_container) - str(self.unicode_container) - - -class CheckImmutable: - mutable_regex = re.compile("does not support mutable operations") - - def check_mutable_error(self, *args, **kwargs): - # Pass whatever function you normally would to pytest.raises - # (after the Exception kind). - with pytest.raises(TypeError): - self.mutable_regex(*args, **kwargs) - - def test_no_mutable_funcs(self): - def setitem(): - self.container[0] = 5 - - self.check_mutable_error(setitem) - - def setslice(): - self.container[1:2] = 3 - - self.check_mutable_error(setslice) - - def delitem(): - del self.container[0] - - self.check_mutable_error(delitem) - - def delslice(): - del self.container[0:3] - - self.check_mutable_error(delslice) - mutable_methods = getattr(self, "mutable_methods", []) - - for meth in mutable_methods: - self.check_mutable_error(getattr(self.container, meth)) - - def test_slicing_maintains_type(self): - result = self.container[1:2] - expected = self.lst[1:2] - self.check_result(result, expected) - - def check_result(self, result, expected, klass=None): - klass = klass or self.klass - assert isinstance(result, klass) - assert result == expected - - class TestPandasDelegate: class Delegator: _properties = ["foo"]