Skip to content
Open
40 changes: 40 additions & 0 deletions mypyc/test-data/run-dicts.test
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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
Expand Down
Loading