diff options
Diffstat (limited to 'pyflakes/test/test_match.py')
-rw-r--r-- | pyflakes/test/test_match.py | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/pyflakes/test/test_match.py b/pyflakes/test/test_match.py new file mode 100644 index 0000000..89826e3 --- /dev/null +++ b/pyflakes/test/test_match.py @@ -0,0 +1,83 @@ +from sys import version_info + +from pyflakes.test.harness import TestCase, skipIf + + +@skipIf(version_info < (3, 10), "Python >= 3.10 only") +class TestMatch(TestCase): + def test_match_bindings(self): + self.flakes(''' + def f(): + x = 1 + match x: + case 1 as y: + print(f'matched as {y}') + ''') + self.flakes(''' + def f(): + x = [1, 2, 3] + match x: + case [1, y, 3]: + print(f'matched {y}') + ''') + self.flakes(''' + def f(): + x = {'foo': 1} + match x: + case {'foo': y}: + print(f'matched {y}') + ''') + + def test_match_pattern_matched_class(self): + self.flakes(''' + from a import B + + match 1: + case B(x=1) as y: + print(f'matched {y}') + ''') + self.flakes(''' + from a import B + + match 1: + case B(a, x=z) as y: + print(f'matched {y} {a} {z}') + ''') + + def test_match_placeholder(self): + self.flakes(''' + def f(): + match 1: + case _: + print('catchall!') + ''') + + def test_match_singleton(self): + self.flakes(''' + match 1: + case True: + print('true') + ''') + + def test_match_or_pattern(self): + self.flakes(''' + match 1: + case 1 | 2: + print('one or two') + ''') + + def test_match_star(self): + self.flakes(''' + x = [1, 2, 3] + match x: + case [1, *y]: + print(f'captured: {y}') + ''') + + def test_match_double_star(self): + self.flakes(''' + x = {'foo': 'bar', 'baz': 'womp'} + match x: + case {'foo': k1, **rest}: + print(f'{k1=} {rest=}') + ''') |