diff options
author | Nikita Sobolev <mail@sobolevn.me> | 2022-01-08 19:43:42 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-08 19:43:42 (GMT) |
commit | 8d59d2563b914b7208779834895c080c70cd94dd (patch) | |
tree | cba6217ebab091f8cfd22e9c0c604d3ae2d3f6e7 /Lib/test/test_enum.py | |
parent | b6aa38f1ca79600f2ab46ac114ff36461a19c4a3 (diff) | |
download | cpython-8d59d2563b914b7208779834895c080c70cd94dd.zip cpython-8d59d2563b914b7208779834895c080c70cd94dd.tar.gz cpython-8d59d2563b914b7208779834895c080c70cd94dd.tar.bz2 |
bpo-46301: [Enum] test uncomparable values in `_convert_` (GH-30472)
add tests that cover different types, and same non-comparable types
Diffstat (limited to 'Lib/test/test_enum.py')
-rw-r--r-- | Lib/test/test_enum.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 2b3eac5..7e919fb 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -4440,6 +4440,15 @@ CONVERT_STRING_TEST_NAME_A = 5 # This one should sort first. CONVERT_STRING_TEST_NAME_E = 5 CONVERT_STRING_TEST_NAME_F = 5 +# We also need values that cannot be compared: +UNCOMPARABLE_A = 5 +UNCOMPARABLE_C = (9, 1) # naming order is broken on purpose +UNCOMPARABLE_B = 'value' + +COMPLEX_C = 1j +COMPLEX_A = 2j +COMPLEX_B = 3j + class TestIntEnumConvert(unittest.TestCase): def setUp(self): # Reset the module-level test variables to their original integer @@ -4477,6 +4486,32 @@ class TestIntEnumConvert(unittest.TestCase): and name not in dir(IntEnum)], [], msg='Names other than CONVERT_TEST_* found.') + def test_convert_uncomparable(self): + uncomp = enum.Enum._convert_( + 'Uncomparable', + MODULE, + filter=lambda x: x.startswith('UNCOMPARABLE_'), + ) + + # Should be ordered by `name` only: + self.assertEqual( + list(uncomp), + [uncomp.UNCOMPARABLE_A, uncomp.UNCOMPARABLE_B, uncomp.UNCOMPARABLE_C], + ) + + def test_convert_complex(self): + uncomp = enum.Enum._convert_( + 'Uncomparable', + MODULE, + filter=lambda x: x.startswith('COMPLEX_'), + ) + + # Should be ordered by `name` only: + self.assertEqual( + list(uncomp), + [uncomp.COMPLEX_A, uncomp.COMPLEX_B, uncomp.COMPLEX_C], + ) + @unittest.skipUnless(python_version == (3, 8), '_convert was deprecated in 3.8') def test_convert_warn(self): |