File tree Expand file tree Collapse file tree 1 file changed +27
-0
lines changed
Expand file tree Collapse file tree 1 file changed +27
-0
lines changed Original file line number Diff line number Diff 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+
181208def test_is_file_like (mock ):
182209 class MockFile (object ):
183210 pass
You can’t perform that action at this time.
0 commit comments