Skip to content

Commit 7bf3067

Browse files
author
cloudboat
committed
TEST: Comprehensive consolidation of all test cases into parametrized test
1 parent 77f3af8 commit 7bf3067

File tree

1 file changed

+63
-37
lines changed

1 file changed

+63
-37
lines changed

pandas/tests/indexes/multi/test_insert_level.py

Lines changed: 63 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,62 @@ class TestMultiIndexInsertLevel:
3636
[("A", "middle", 1), ("B", "middle", 2), ("C", "middle", 3)],
3737
["level1", "custom_name", "level2"],
3838
),
39+
(
40+
0,
41+
"start",
42+
None,
43+
[("start", "A", 1), ("start", "B", 2), ("start", "C", 3)],
44+
[None, "level1", "level2"],
45+
),
46+
(
47+
2,
48+
"end",
49+
None,
50+
[("A", 1, "end"), ("B", 2, "end"), ("C", 3, "end")],
51+
["level1", "level2", None],
52+
),
53+
(
54+
1,
55+
100,
56+
None,
57+
[("A", 100, 1), ("B", 100, 2), ("C", 100, 3)],
58+
["level1", None, "level2"],
59+
),
60+
(
61+
1,
62+
1.5,
63+
None,
64+
[("A", 1.5, 1), ("B", 1.5, 2), ("C", 1.5, 3)],
65+
["level1", None, "level2"],
66+
),
67+
(
68+
1,
69+
None,
70+
None,
71+
[("A", None, 1), ("B", None, 2), ("C", None, 3)],
72+
["level1", None, "level2"],
73+
),
74+
(
75+
1,
76+
["X", "Y", "Z"],
77+
None,
78+
[("A", "X", 1), ("B", "Y", 2), ("C", "Z", 3)],
79+
["level1", None, "level2"],
80+
),
81+
(
82+
0,
83+
"",
84+
"empty_string",
85+
[("", "A", 1), ("", "B", 2), ("", "C", 3)],
86+
["empty_string", "level1", "level2"],
87+
),
88+
(
89+
1,
90+
True,
91+
None,
92+
[("A", True, 1), ("B", True, 2), ("C", True, 3)],
93+
["level1", None, "level2"],
94+
),
3995
],
4096
)
4197
def test_insert_level_basic(
@@ -49,27 +105,13 @@ def test_insert_level_basic(
49105
expected = pd.MultiIndex.from_tuples(expected_tuples, names=expected_names)
50106
tm.assert_index_equal(result, expected)
51107

52-
@pytest.mark.parametrize(
53-
"position, value",
54-
[
55-
(0, "start"),
56-
(2, "end"),
57-
],
58-
)
59-
def test_insert_level_edge_positions(self, position, value):
60-
simple_idx = pd.MultiIndex.from_tuples(
61-
[("A", 1), ("B", 2), ("C", 3)], names=["level1", "level2"]
62-
)
63-
64-
result = simple_idx.insert_level(position, value)
65-
assert result.nlevels == 3
66-
67108
@pytest.mark.parametrize(
68109
"position, value, expected_error",
69110
[
70111
(5, "invalid", "position must be between"),
71112
(-1, "invalid", "position must be between"),
72113
(1, ["too", "few"], "Length of values must match"),
114+
(3, "value", "position must be between"),
73115
],
74116
)
75117
def test_insert_level_error_cases(self, position, value, expected_error):
@@ -80,18 +122,6 @@ def test_insert_level_error_cases(self, position, value, expected_error):
80122
with pytest.raises(ValueError, match=expected_error):
81123
simple_idx.insert_level(position, value)
82124

83-
@pytest.mark.parametrize(
84-
"value",
85-
[100, 1.5, None],
86-
)
87-
def test_insert_level_with_different_data_types(self, value):
88-
simple_idx = pd.MultiIndex.from_tuples(
89-
[("A", 1), ("B", 2), ("C", 3)], names=["level1", "level2"]
90-
)
91-
92-
result = simple_idx.insert_level(1, value)
93-
assert result.nlevels == 3
94-
95125
def test_insert_level_preserves_original(self):
96126
simple_idx = pd.MultiIndex.from_tuples(
97127
[("A", 1), ("B", 2), ("C", 3)], names=["level1", "level2"]
@@ -106,18 +136,14 @@ def test_insert_level_empty_index(self):
106136
empty_idx = pd.MultiIndex.from_tuples([], names=["level1", "level2"])
107137

108138
result = empty_idx.insert_level(0, [])
109-
assert result.nlevels == 3
110-
assert len(result) == 0
139+
expected = pd.MultiIndex.from_tuples([], names=[None, "level1", "level2"])
140+
tm.assert_index_equal(result, expected)
111141

112-
def test_insert_level_with_different_values(self):
113-
simple_idx = pd.MultiIndex.from_tuples(
114-
[("A", 1), ("B", 2), ("C", 3)], names=["level1", "level2"]
115-
)
142+
def test_insert_level_single_element(self):
143+
single_idx = pd.MultiIndex.from_tuples([("A", 1)], names=["level1", "level2"])
116144

117-
new_values = ["X", "Y", "Z"]
118-
result = simple_idx.insert_level(1, new_values)
145+
result = single_idx.insert_level(1, "middle")
119146
expected = pd.MultiIndex.from_tuples(
120-
[("A", "X", 1), ("B", "Y", 2), ("C", "Z", 3)],
121-
names=["level1", None, "level2"],
147+
[("A", "middle", 1)], names=["level1", None, "level2"]
122148
)
123149
tm.assert_index_equal(result, expected)

0 commit comments

Comments
 (0)