Skip to content

Commit 5f2e74d

Browse files
committed
Added test for invalid input
Test exceptions in from_tuples/from_arrays/from_product
1 parent c2bbe5c commit 5f2e74d

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

pandas/tests/indexes/test_multi.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -672,10 +672,16 @@ def test_from_arrays(self):
672672
for lev, lab in zip(self.index.levels, self.index.labels):
673673
arrays.append(np.asarray(lev).take(lab))
674674

675+
# list of arrays as input
675676
result = MultiIndex.from_arrays(arrays)
676677
assert list(result) == list(self.index)
677-
result2 = MultiIndex.from_arrays(iter(arrays)) # iterator as input
678+
# iterator as input
679+
result2 = MultiIndex.from_arrays(iter(arrays))
678680
assert list(result2) == list(self.index)
681+
# invlide iterator input
682+
with tm.assert_raises_regex(
683+
TypeError, "Inappropriate input for list of arrays."):
684+
MultiIndex.from_arrays(0)
679685

680686
# infer correctly
681687
result = MultiIndex.from_arrays([[pd.NaT, Timestamp('20130101')],
@@ -833,6 +839,10 @@ def test_from_product(self):
833839
result2 = MultiIndex.from_product(iter([first, second]), names=names)
834840
assert result2.equals(expected)
835841
assert result2.names == names
842+
# Invalid non-iterable input
843+
with tm.assert_raises_regex(TypeError,
844+
"Inappropriate input for iterables."):
845+
MultiIndex.from_product(0)
836846

837847
def test_from_product_empty(self):
838848
# 0 levels
@@ -1735,12 +1745,18 @@ def test_from_tuples(self):
17351745
expected = MultiIndex(levels=[[1, 3], [2, 4]],
17361746
labels=[[0, 1], [0, 1]],
17371747
names=['a', 'b'])
1748+
# input tuples
17381749
res1 = MultiIndex.from_tuples(((1, 2), (3, 4)), names=['a', 'b'])
17391750
assert expected.names == res1.names
17401751
assert res1.equals(expected)
1752+
# input iterator for tuples
17411753
res2 = MultiIndex.from_tuples(zip([1, 3], [2, 4]), names=['a', 'b'])
17421754
assert expected.names == res2.names
17431755
assert res2.equals(expected)
1756+
# input non-iterables
1757+
with tm.assert_raises_regex(TypeError,
1758+
'Inappropriate input for tuples.'):
1759+
MultiIndex.from_tuples(0)
17441760

17451761
def test_from_tuples_empty(self):
17461762
# GH 16777

0 commit comments

Comments
 (0)