Skip to content

Commit 75a4ded

Browse files
committed
TST: Add test for is_dict_like expanded def
1 parent 62ce003 commit 75a4ded

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

pandas/tests/dtypes/test_inference.py

+27
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,33 @@ def test_is_dict_like_fails(ll):
178178
assert not inference.is_dict_like(ll)
179179

180180

181+
@pytest.mark.parametrize("has_keys", [True, False])
182+
@pytest.mark.parametrize("has_getitem", [True, False])
183+
@pytest.mark.parametrize("has_contains", [True, False])
184+
def test_is_dict_like_duct_type(has_keys, has_getitem, has_contains):
185+
class DictLike(object):
186+
def __init__(self, d):
187+
self.d = d
188+
189+
if has_keys:
190+
def keys(self):
191+
return self.d.keys()
192+
193+
if has_getitem:
194+
def __getitem__(self, key):
195+
return self.d.__getitem__(key)
196+
197+
if has_contains:
198+
def __contains__(self, key):
199+
return self.d.__contains__(key)
200+
201+
d = DictLike({1: 2})
202+
result = inference.is_dict_like(d)
203+
expected = has_keys and has_getitem and has_contains
204+
205+
assert result is expected
206+
207+
181208
def test_is_file_like(mock):
182209
class MockFile(object):
183210
pass

0 commit comments

Comments
 (0)