Skip to content

Commit dae8d46

Browse files
committed
more failing tests
1 parent 8f67e34 commit dae8d46

File tree

1 file changed

+75
-1
lines changed

1 file changed

+75
-1
lines changed

tests/integration/index_manipulation/test_integration_index_manipulation_set_levels.py

Lines changed: 75 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,83 @@
3333
),
3434
id="set-single-level",
3535
),
36+
pytest.param(
37+
pd.MultiIndex.from_tuples(
38+
[
39+
("sa", "va", "kg", 0),
40+
("sb", "vb", "m", 1),
41+
("sa", "va", "kg", 2),
42+
],
43+
names=["scenario", "variable", "unit", "run_id"],
44+
),
45+
{"new_variable": ["a", "b", "c"]},
46+
pd.MultiIndex.from_tuples(
47+
[
48+
("sa", "va", "kg", 0, "a"),
49+
("sb", "vb", "m", 1, "b"),
50+
("sa", "va", "kg", 2, "c"),
51+
],
52+
names=["scenario", "variable", "unit", "run_id", "new_variable"],
53+
),
54+
id="set-multiple-levels",
55+
),
56+
pytest.param(
57+
pd.MultiIndex.from_tuples(
58+
[
59+
("sa", "va", "kg", 0),
60+
("sb", "vb", "m", 1),
61+
("sa", "va", "kg", 2),
62+
],
63+
names=["scenario", "variable", "unit", "run_id"],
64+
),
65+
{"variable": ["a", "b", "c"]},
66+
pd.MultiIndex.from_tuples(
67+
[
68+
("sa", "a", "kg", 0),
69+
("sb", "b", "m", 1),
70+
("sa", "c", "kg", 2),
71+
],
72+
names=["scenario", "variable", "unit", "run_id"],
73+
),
74+
id="alter-existing-level",
75+
),
3676
),
3777
)
38-
def test_update_levels_from_other(start, levels_to_set, exp):
78+
def test_set_levels(start, levels_to_set, exp):
3979
res = set_levels(start, levels_to_set=levels_to_set)
4080

4181
pd.testing.assert_index_equal(res, exp)
82+
83+
84+
def test_set_levels_raises_type_error():
85+
"""
86+
Test that set_levels raises an error when the levels to set are not in the index.
87+
"""
88+
start = pd.Index(range(10), name="index")
89+
90+
levels_to_set = {"new_variable": "test"}
91+
92+
with pytest.raises(TypeError):
93+
set_levels(start, levels_to_set=levels_to_set)
94+
95+
96+
def test_set_levels_raises_value_error():
97+
"""
98+
Test that set_levels raises an error when the levels to set are same length
99+
as index.
100+
"""
101+
start = pd.MultiIndex.from_tuples(
102+
[
103+
("sa", "va", "kg", 0),
104+
("sb", "vb", "m", 1),
105+
("sa", "va", "kg", 2),
106+
],
107+
names=["scenario", "variable", "unit", "run_id"],
108+
)
109+
110+
levels_to_set = {"new_variable": ["a", "b", "c", "d"]}
111+
112+
with pytest.raises(
113+
ValueError, match="Length of values does not match, got 4 but expected 3"
114+
):
115+
set_levels(start, levels_to_set=levels_to_set)

0 commit comments

Comments
 (0)