Skip to content

Commit 4f5e40c

Browse files
authored
TST/REF: collect tests by method (pandas-dev#38589)
1 parent f4b8a75 commit 4f5e40c

13 files changed

+182
-161
lines changed

pandas/tests/indexes/datetimes/test_datetime.py

-9
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88
from pandas import DataFrame, DatetimeIndex, Index, Timestamp, date_range, offsets
99
import pandas._testing as tm
1010

11-
randn = np.random.randn
12-
1311

1412
class TestDatetimeIndex:
1513
def test_time_loc(self): # GH8667
@@ -355,10 +353,3 @@ def test_to_frame_datetime_tz(self):
355353
result = idx.to_frame()
356354
expected = DataFrame(idx, index=idx)
357355
tm.assert_frame_equal(result, expected)
358-
359-
def test_split_non_utc(self):
360-
# GH 14042
361-
indices = date_range("2016-01-01 00:00:00+0200", freq="S", periods=10)
362-
result = np.split(indices, indices_or_sections=[])[0]
363-
expected = indices._with_freq(None)
364-
tm.assert_index_equal(result, expected)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import numpy as np
2+
3+
from pandas import date_range
4+
import pandas._testing as tm
5+
6+
7+
class TestSplit:
8+
def test_split_non_utc(self):
9+
# GH#14042
10+
indices = date_range("2016-01-01 00:00:00+0200", freq="S", periods=10)
11+
result = np.split(indices, indices_or_sections=[])[0]
12+
expected = indices._with_freq(None)
13+
tm.assert_index_equal(result, expected)

pandas/tests/series/indexing/test_getitem.py

+29
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,13 @@
2626

2727

2828
class TestSeriesGetitemScalars:
29+
def test_getitem_negative_out_of_bounds(self):
30+
ser = Series(tm.rands_array(5, 10), index=tm.rands_array(10, 10))
31+
32+
msg = "index -11 is out of bounds for axis 0 with size 10"
33+
with pytest.raises(IndexError, match=msg):
34+
ser[-11]
35+
2936
def test_getitem_out_of_bounds_indexerror(self, datetime_series):
3037
# don't segfault, GH#495
3138
msg = r"index \d+ is out of bounds for axis 0 with size \d+"
@@ -186,6 +193,17 @@ def test_getitem_slice_date(self, slc, positions):
186193
expected = ser.take(positions)
187194
tm.assert_series_equal(result, expected)
188195

196+
def test_getitem_slice_float_raises(self, datetime_series):
197+
msg = (
198+
"cannot do slice indexing on DatetimeIndex with these indexers "
199+
r"\[{key}\] of type float"
200+
)
201+
with pytest.raises(TypeError, match=msg.format(key=r"4\.0")):
202+
datetime_series[4.0:10.0]
203+
204+
with pytest.raises(TypeError, match=msg.format(key=r"4\.5")):
205+
datetime_series[4.5:10.0]
206+
189207

190208
class TestSeriesGetitemListLike:
191209
@pytest.mark.parametrize("box", [list, np.array, Index, pd.Series])
@@ -461,3 +479,14 @@ def test_getitem_1tuple_slice_without_multiindex():
461479
result = ser[key]
462480
expected = ser[key[0]]
463481
tm.assert_series_equal(result, expected)
482+
483+
484+
def test_getitem_preserve_name(datetime_series):
485+
result = datetime_series[datetime_series > 0]
486+
assert result.name == datetime_series.name
487+
488+
result = datetime_series[[0, 2, 4]]
489+
assert result.name == datetime_series.name
490+
491+
result = datetime_series[5:10]
492+
assert result.name == datetime_series.name

pandas/tests/series/indexing/test_numeric.py

-28
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import numpy as np
2-
import pytest
32

43
from pandas import DataFrame, Index, Series
54
import pandas._testing as tm
@@ -30,16 +29,6 @@ def test_slice_float64():
3029
tm.assert_frame_equal(result, expected)
3130

3231

33-
def test_getitem_negative_out_of_bounds():
34-
s = Series(tm.rands_array(5, 10), index=tm.rands_array(10, 10))
35-
36-
msg = "index -11 is out of bounds for axis 0 with size 10"
37-
with pytest.raises(IndexError, match=msg):
38-
s[-11]
39-
with pytest.raises(IndexError, match=msg):
40-
s[-11] = "foo"
41-
42-
4332
def test_getitem_setitem_slice_bug():
4433
s = Series(range(10), index=list(range(10)))
4534
result = s[-12:]
@@ -69,20 +58,3 @@ def test_getitem_setitem_slice_integers():
6958
s[:4] = 0
7059
assert (s[:4] == 0).all()
7160
assert not (s[4:] == 0).any()
72-
73-
74-
def test_slice_float_get_set(datetime_series):
75-
msg = (
76-
"cannot do slice indexing on DatetimeIndex with these indexers "
77-
r"\[{key}\] of type float"
78-
)
79-
with pytest.raises(TypeError, match=msg.format(key=r"4\.0")):
80-
datetime_series[4.0:10.0]
81-
82-
with pytest.raises(TypeError, match=msg.format(key=r"4\.0")):
83-
datetime_series[4.0:10.0] = 0
84-
85-
with pytest.raises(TypeError, match=msg.format(key=r"4\.5")):
86-
datetime_series[4.5:10.0]
87-
with pytest.raises(TypeError, match=msg.format(key=r"4\.5")):
88-
datetime_series[4.5:10.0] = 0

pandas/tests/series/indexing/test_setitem.py

+23-1
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
date_range,
1313
period_range,
1414
)
15+
import pandas._testing as tm
1516
from pandas.core.indexing import IndexingError
16-
import pandas.testing as tm
1717

1818
from pandas.tseries.offsets import BDay
1919

@@ -84,6 +84,28 @@ def test_setitem_na_period_dtype_casts_to_nat(self, na_val):
8484
assert ser[4] is NaT
8585

8686

87+
class TestSetitemScalarIndexer:
88+
def test_setitem_negative_out_of_bounds(self):
89+
ser = Series(tm.rands_array(5, 10), index=tm.rands_array(10, 10))
90+
91+
msg = "index -11 is out of bounds for axis 0 with size 10"
92+
with pytest.raises(IndexError, match=msg):
93+
ser[-11] = "foo"
94+
95+
96+
class TestSetitemSlices:
97+
def test_setitem_slice_float_raises(self, datetime_series):
98+
msg = (
99+
"cannot do slice indexing on DatetimeIndex with these indexers "
100+
r"\[{key}\] of type float"
101+
)
102+
with pytest.raises(TypeError, match=msg.format(key=r"4\.0")):
103+
datetime_series[4.0:10.0] = 0
104+
105+
with pytest.raises(TypeError, match=msg.format(key=r"4\.5")):
106+
datetime_series[4.5:10.0] = 0
107+
108+
87109
class TestSetitemBooleanMask:
88110
def test_setitem_boolean(self, string_series):
89111
mask = string_series > string_series.median()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import numpy as np
2+
import pytest
3+
4+
from pandas import Series
5+
from pandas.core.construction import create_series_with_explicit_dtype
6+
7+
8+
@pytest.mark.parametrize(
9+
"data, expected",
10+
[
11+
(np.random.randint(0, 10, size=1000), False),
12+
(np.arange(1000), True),
13+
([], True),
14+
([np.nan], True),
15+
(["foo", "bar", np.nan], True),
16+
(["foo", "foo", np.nan], False),
17+
(["foo", "bar", np.nan, np.nan], False),
18+
],
19+
)
20+
def test_is_unique(data, expected):
21+
# GH#11946 / GH#25180
22+
ser = create_series_with_explicit_dtype(data, dtype_if_empty=object)
23+
assert ser.is_unique is expected
24+
25+
26+
def test_is_unique_class_ne(capsys):
27+
# GH#20661
28+
class Foo:
29+
def __init__(self, val):
30+
self._value = val
31+
32+
def __ne__(self, other):
33+
raise Exception("NEQ not supported")
34+
35+
with capsys.disabled():
36+
li = [Foo(i) for i in range(5)]
37+
ser = Series(li, index=list(range(5)))
38+
39+
ser.is_unique
40+
captured = capsys.readouterr()
41+
assert len(captured.err) == 0
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import numpy as np
2+
3+
from pandas import Categorical, Series
4+
5+
6+
def test_nunique():
7+
# basics.rst doc example
8+
series = Series(np.random.randn(500))
9+
series[20:500] = np.nan
10+
series[10:20] = 5000
11+
result = series.nunique()
12+
assert result == 11
13+
14+
15+
def test_nunique_categorical():
16+
# GH#18051
17+
ser = Series(Categorical([]))
18+
assert ser.nunique() == 0
19+
20+
ser = Series(Categorical([np.nan]))
21+
assert ser.nunique() == 0
+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import numpy as np
2+
3+
from pandas import Categorical, Series
4+
import pandas._testing as tm
5+
6+
7+
class TestUnique:
8+
def test_unique_data_ownership(self):
9+
# it works! GH#1807
10+
Series(Series(["a", "c", "b"]).unique()).sort_values()
11+
12+
def test_unique(self):
13+
# GH#714 also, dtype=float
14+
ser = Series([1.2345] * 100)
15+
ser[::2] = np.nan
16+
result = ser.unique()
17+
assert len(result) == 2
18+
19+
# explicit f4 dtype
20+
ser = Series([1.2345] * 100, dtype="f4")
21+
ser[::2] = np.nan
22+
result = ser.unique()
23+
assert len(result) == 2
24+
25+
def test_unique_nan_object_dtype(self):
26+
# NAs in object arrays GH#714
27+
ser = Series(["foo"] * 100, dtype="O")
28+
ser[::2] = np.nan
29+
result = ser.unique()
30+
assert len(result) == 2
31+
32+
def test_unique_none(self):
33+
# decision about None
34+
ser = Series([1, 2, 3, None, None, None], dtype=object)
35+
result = ser.unique()
36+
expected = np.array([1, 2, 3, None], dtype=object)
37+
tm.assert_numpy_array_equal(result, expected)
38+
39+
def test_unique_categorical(self):
40+
# GH#18051
41+
cat = Categorical([])
42+
ser = Series(cat)
43+
result = ser.unique()
44+
tm.assert_categorical_equal(result, cat)
45+
46+
cat = Categorical([np.nan])
47+
ser = Series(cat)
48+
result = ser.unique()
49+
tm.assert_categorical_equal(result, cat)

pandas/tests/series/test_api.py

-10
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,6 @@
99

1010

1111
class TestSeriesMisc:
12-
def test_getitem_preserve_name(self, datetime_series):
13-
result = datetime_series[datetime_series > 0]
14-
assert result.name == datetime_series.name
15-
16-
result = datetime_series[[0, 2, 4]]
17-
assert result.name == datetime_series.name
18-
19-
result = datetime_series[5:10]
20-
assert result.name == datetime_series.name
21-
2212
def test_tab_completion(self):
2313
# GH 9910
2414
s = Series(list("abcd"))

pandas/tests/series/test_dtypes.py

-15
Original file line numberDiff line numberDiff line change
@@ -94,21 +94,6 @@ def cmp(a, b):
9494
result = ser.astype("object").astype(CategoricalDtype())
9595
tm.assert_series_equal(result, roundtrip_expected)
9696

97-
def test_astype_categorical_invalid_conversions(self):
98-
# invalid conversion (these are NOT a dtype)
99-
cat = Categorical([f"{i} - {i + 499}" for i in range(0, 10000, 500)])
100-
ser = Series(np.random.RandomState(0).randint(0, 10000, 100)).sort_values()
101-
ser = pd.cut(ser, range(0, 10500, 500), right=False, labels=cat)
102-
103-
msg = (
104-
"dtype '<class 'pandas.core.arrays.categorical.Categorical'>' "
105-
"not understood"
106-
)
107-
with pytest.raises(TypeError, match=msg):
108-
ser.astype(Categorical)
109-
with pytest.raises(TypeError, match=msg):
110-
ser.astype("object").astype(Categorical)
111-
11297
def test_series_to_categorical(self):
11398
# see gh-16524: test conversion of Series to Categorical
11499
series = Series(["a", "b", "c"])

0 commit comments

Comments
 (0)