projektAI/venv/Lib/site-packages/pandas/tests/indexes/test_any_index.py
2021-06-06 22:13:05 +02:00

106 lines
2.8 KiB
Python

"""
Tests that can be parametrized over _any_ Index object.
TODO: consider using hypothesis for these.
"""
import pytest
import pandas._testing as tm
def test_boolean_context_compat(index):
with pytest.raises(ValueError, match="The truth value of a"):
if index:
pass
def test_sort(index):
msg = "cannot sort an Index object in-place, use sort_values instead"
with pytest.raises(TypeError, match=msg):
index.sort()
def test_hash_error(index):
with pytest.raises(TypeError, match=f"unhashable type: '{type(index).__name__}'"):
hash(index)
def test_mutability(index):
if not len(index):
return
msg = "Index does not support mutable operations"
with pytest.raises(TypeError, match=msg):
index[0] = index[0]
def test_wrong_number_names(index):
names = index.nlevels * ["apple", "banana", "carrot"]
with pytest.raises(ValueError, match="^Length"):
index.names = names
class TestConversion:
def test_to_series(self, index):
# assert that we are creating a copy of the index
ser = index.to_series()
assert ser.values is not index.values
assert ser.index is not index
assert ser.name == index.name
def test_to_series_with_arguments(self, index):
# GH#18699
# index kwarg
ser = index.to_series(index=index)
assert ser.values is not index.values
assert ser.index is index
assert ser.name == index.name
# name kwarg
ser = index.to_series(name="__test")
assert ser.values is not index.values
assert ser.index is not index
assert ser.name != index.name
def test_tolist_matches_list(self, index):
assert index.tolist() == list(index)
class TestRoundTrips:
def test_pickle_roundtrip(self, index):
result = tm.round_trip_pickle(index)
tm.assert_index_equal(result, index)
if result.nlevels > 1:
# GH#8367 round-trip with timezone
assert index.equal_levels(result)
class TestIndexing:
def test_slice_keeps_name(self, index):
assert index.name == index[1:].name
class TestRendering:
def test_str(self, index):
# test the string repr
index.name = "foo"
assert "'foo'" in str(index)
assert type(index).__name__ in str(index)
class TestReductions:
def test_argmax_axis_invalid(self, index):
# GH#23081
msg = r"`axis` must be fewer than the number of dimensions \(1\)"
with pytest.raises(ValueError, match=msg):
index.argmax(axis=1)
with pytest.raises(ValueError, match=msg):
index.argmin(axis=2)
with pytest.raises(ValueError, match=msg):
index.min(axis=-2)
with pytest.raises(ValueError, match=msg):
index.max(axis=-3)