mirror of
https://github.com/python/cpython.git
synced 2025-09-27 10:50:04 +00:00
[3.12] gh-106368: Add tests for permutation helpers in Argument Clinic (GH-106407) (#106409)
Added new test class PermutationTests()
(cherry picked from commit 8f6df5e9cb
)
Co-authored-by: Erlend E. Aasland <erlend@python.org>
This commit is contained in:
parent
b84365fe3e
commit
fda297031b
2 changed files with 108 additions and 2 deletions
|
@ -1586,5 +1586,111 @@ class ClinicFunctionalTest(unittest.TestCase):
|
||||||
self.assertEqual(func(), name)
|
self.assertEqual(func(), name)
|
||||||
|
|
||||||
|
|
||||||
|
class PermutationTests(unittest.TestCase):
|
||||||
|
"""Test permutation support functions."""
|
||||||
|
|
||||||
|
def test_permute_left_option_groups(self):
|
||||||
|
expected = (
|
||||||
|
(),
|
||||||
|
(3,),
|
||||||
|
(2, 3),
|
||||||
|
(1, 2, 3),
|
||||||
|
)
|
||||||
|
data = list(zip([1, 2, 3])) # Generate a list of 1-tuples.
|
||||||
|
actual = tuple(clinic.permute_left_option_groups(data))
|
||||||
|
self.assertEqual(actual, expected)
|
||||||
|
|
||||||
|
def test_permute_right_option_groups(self):
|
||||||
|
expected = (
|
||||||
|
(),
|
||||||
|
(1,),
|
||||||
|
(1, 2),
|
||||||
|
(1, 2, 3),
|
||||||
|
)
|
||||||
|
data = list(zip([1, 2, 3])) # Generate a list of 1-tuples.
|
||||||
|
actual = tuple(clinic.permute_right_option_groups(data))
|
||||||
|
self.assertEqual(actual, expected)
|
||||||
|
|
||||||
|
def test_permute_optional_groups(self):
|
||||||
|
empty = {
|
||||||
|
"left": (), "required": (), "right": (),
|
||||||
|
"expected": ((),),
|
||||||
|
}
|
||||||
|
noleft1 = {
|
||||||
|
"left": (), "required": ("b",), "right": ("c",),
|
||||||
|
"expected": (
|
||||||
|
("b",),
|
||||||
|
("b", "c"),
|
||||||
|
),
|
||||||
|
}
|
||||||
|
noleft2 = {
|
||||||
|
"left": (), "required": ("b", "c",), "right": ("d",),
|
||||||
|
"expected": (
|
||||||
|
("b", "c"),
|
||||||
|
("b", "c", "d"),
|
||||||
|
),
|
||||||
|
}
|
||||||
|
noleft3 = {
|
||||||
|
"left": (), "required": ("b", "c",), "right": ("d", "e"),
|
||||||
|
"expected": (
|
||||||
|
("b", "c"),
|
||||||
|
("b", "c", "d"),
|
||||||
|
("b", "c", "d", "e"),
|
||||||
|
),
|
||||||
|
}
|
||||||
|
noright1 = {
|
||||||
|
"left": ("a",), "required": ("b",), "right": (),
|
||||||
|
"expected": (
|
||||||
|
("b",),
|
||||||
|
("a", "b"),
|
||||||
|
),
|
||||||
|
}
|
||||||
|
noright2 = {
|
||||||
|
"left": ("a",), "required": ("b", "c"), "right": (),
|
||||||
|
"expected": (
|
||||||
|
("b", "c"),
|
||||||
|
("a", "b", "c"),
|
||||||
|
),
|
||||||
|
}
|
||||||
|
noright3 = {
|
||||||
|
"left": ("a", "b"), "required": ("c",), "right": (),
|
||||||
|
"expected": (
|
||||||
|
("c",),
|
||||||
|
("b", "c"),
|
||||||
|
("a", "b", "c"),
|
||||||
|
),
|
||||||
|
}
|
||||||
|
leftandright1 = {
|
||||||
|
"left": ("a",), "required": ("b",), "right": ("c",),
|
||||||
|
"expected": (
|
||||||
|
("b",),
|
||||||
|
("a", "b"), # Prefer left.
|
||||||
|
("a", "b", "c"),
|
||||||
|
),
|
||||||
|
}
|
||||||
|
leftandright2 = {
|
||||||
|
"left": ("a", "b"), "required": ("c", "d"), "right": ("e", "f"),
|
||||||
|
"expected": (
|
||||||
|
("c", "d"),
|
||||||
|
("b", "c", "d"), # Prefer left.
|
||||||
|
("a", "b", "c", "d"), # Prefer left.
|
||||||
|
("a", "b", "c", "d", "e"),
|
||||||
|
("a", "b", "c", "d", "e", "f"),
|
||||||
|
),
|
||||||
|
}
|
||||||
|
dataset = (
|
||||||
|
empty,
|
||||||
|
noleft1, noleft2, noleft3,
|
||||||
|
noright1, noright2, noright3,
|
||||||
|
leftandright1, leftandright2,
|
||||||
|
)
|
||||||
|
for params in dataset:
|
||||||
|
with self.subTest(**params):
|
||||||
|
left, required, right, expected = params.values()
|
||||||
|
permutations = clinic.permute_optional_groups(left, required, right)
|
||||||
|
actual = tuple(permutations)
|
||||||
|
self.assertEqual(actual, expected)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -509,7 +509,7 @@ class PythonLanguage(Language):
|
||||||
|
|
||||||
def permute_left_option_groups(l):
|
def permute_left_option_groups(l):
|
||||||
"""
|
"""
|
||||||
Given [1, 2, 3], should yield:
|
Given [(1,), (2,), (3,)], should yield:
|
||||||
()
|
()
|
||||||
(3,)
|
(3,)
|
||||||
(2, 3)
|
(2, 3)
|
||||||
|
@ -524,7 +524,7 @@ def permute_left_option_groups(l):
|
||||||
|
|
||||||
def permute_right_option_groups(l):
|
def permute_right_option_groups(l):
|
||||||
"""
|
"""
|
||||||
Given [1, 2, 3], should yield:
|
Given [(1,), (2,), (3,)], should yield:
|
||||||
()
|
()
|
||||||
(1,)
|
(1,)
|
||||||
(1, 2)
|
(1, 2)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue