Skip to content

Commit 588b634

Browse files
authored
TST: flesh out EA setitem tests (#39034)
1 parent d00438b commit 588b634

File tree

1 file changed

+35
-16
lines changed

1 file changed

+35
-16
lines changed

pandas/tests/extension/base/setitem.py

+35-16
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,35 @@
88

99

1010
class BaseSetitemTests(BaseExtensionTests):
11+
@pytest.fixture(
12+
params=[
13+
lambda x: x.index,
14+
lambda x: list(x.index),
15+
lambda x: slice(None),
16+
lambda x: slice(0, len(x)),
17+
lambda x: range(len(x)),
18+
lambda x: list(range(len(x))),
19+
lambda x: np.ones(len(x), dtype=bool),
20+
],
21+
ids=[
22+
"index",
23+
"list[index]",
24+
"null_slice",
25+
"full_slice",
26+
"range",
27+
"list(range)",
28+
"mask",
29+
],
30+
)
31+
def full_indexer(self, request):
32+
"""
33+
Fixture for an indexer to pass to obj.loc to get/set the full length of the
34+
object.
35+
36+
In some cases, assumes that obj.index is the default RangeIndex.
37+
"""
38+
return request.param
39+
1140
def test_setitem_scalar_series(self, data, box_in_series):
1241
if box_in_series:
1342
data = pd.Series(data)
@@ -305,30 +334,20 @@ def test_setitem_preserves_views(self, data):
305334
assert view1[0] == data[1]
306335
assert view2[0] == data[1]
307336

308-
def test_setitem_dataframe_column_with_index(self, data):
337+
def test_setitem_with_expansion_dataframe_column(self, data, full_indexer):
309338
# https://github.com/pandas-dev/pandas/issues/32395
310339
df = expected = pd.DataFrame({"data": pd.Series(data)})
311340
result = pd.DataFrame(index=df.index)
312-
result.loc[df.index, "data"] = df["data"]
313-
self.assert_frame_equal(result, expected)
314341

315-
def test_setitem_dataframe_column_without_index(self, data):
316-
# https://github.com/pandas-dev/pandas/issues/32395
317-
df = expected = pd.DataFrame({"data": pd.Series(data)})
318-
result = pd.DataFrame(index=df.index)
319-
result.loc[:, "data"] = df["data"]
342+
key = full_indexer(df)
343+
result.loc[key, "data"] = df["data"]
320344
self.assert_frame_equal(result, expected)
321345

322-
def test_setitem_series_with_index(self, data):
346+
def test_setitem_series(self, data, full_indexer):
323347
# https://github.com/pandas-dev/pandas/issues/32395
324348
ser = expected = pd.Series(data, name="data")
325349
result = pd.Series(index=ser.index, dtype=object, name="data")
326-
result.loc[ser.index] = ser
327-
self.assert_series_equal(result, expected)
328350

329-
def test_setitem_series_without_index(self, data):
330-
# https://github.com/pandas-dev/pandas/issues/32395
331-
ser = expected = pd.Series(data, name="data")
332-
result = pd.Series(index=ser.index, dtype=object, name="data")
333-
result.loc[:] = ser
351+
key = full_indexer(ser)
352+
result.loc[key] = ser
334353
self.assert_series_equal(result, expected)

0 commit comments

Comments
 (0)