File tree 1 file changed +27
-0
lines changed
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):
178
178
assert not inference .is_dict_like (ll )
179
179
180
180
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
+
181
208
def test_is_file_like (mock ):
182
209
class MockFile (object ):
183
210
pass
You can’t perform that action at this time.
0 commit comments