Skip to content

feat(test): Failure test case for mypyc dictionary subclass views #19076

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
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