diff --git a/mypyc/test-data/run-dicts.test b/mypyc/test-data/run-dicts.test index 2a3be188ad00..956e1aed4914 100644 --- a/mypyc/test-data/run-dicts.test +++ b/mypyc/test-data/run-dicts.test @@ -230,6 +230,7 @@ c [case testDictMethods] from collections import defaultdict +from typing import DefaultDict # type: ignore [attr-defined] from typing import Dict, Optional, List, Set def test_dict_clear() -> None: @@ -265,6 +266,45 @@ class MyDict(dict): else: return super().setdefault(k, v) + 10 +class MyComplexDict(DefaultDict[str, int], MyDict): + pass + +def test_dict_keys() -> None: + d: Dict[str, Optional[int]] = {'a': 1, 'b': 2} + assert list(d.keys()) == ['a', 'b'] + +def test_dict_subclass_keys() -> None: + d = MyDict({'a': 1, 'b': 2}) + assert list(d.keys()) == ['a', 'b'] + +def test_dict_subclass_complex_keys() -> None: + d = MyComplexDict(int, {'a': 1, 'b': 2}) + assert list(d.keys()) == ['a', 'b'] + +def test_dict_values() -> None: + d: Dict[str, Optional[int]] = {'a': 1, 'b': 2} + assert list(d.values()) == [1, 2] + +def test_dict_subclass_values() -> None: + d = MyDict({'a': 1, 'b': 2}) + assert list(d.values()) == [1, 2] + +def test_dict_subclass_complex_values() -> None: + d = MyComplexDict(int, {'a': 1, 'b': 2}) + assert list(d.values()) == [1, 2] + +def test_dict_items() -> None: + d: Dict[str, Optional[int]] = {'a': 1, 'b': 2} + assert list(d.items()) == [('a', 1), ('b', 2)] + +def test_dict_subclass_items() -> None: + d = MyDict({'a': 1, 'b': 2}) + assert list(d.items()) == [('a', 1), ('b', 2)] + +def test_dict_subclass_complex_items() -> None: + d = MyComplexDict(int, {'a': 1, 'b': 2}) + assert list(d.items()) == [('a', 1), ('b', 2)] + def test_dict_setdefault() -> None: d: Dict[str, Optional[int]] = {'a': 1, 'b': 2} assert d.setdefault('a', 2) == 1