summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_enum.py
diff options
context:
space:
mode:
authorNikita Sobolev <mail@sobolevn.me>2022-01-08 19:43:42 (GMT)
committerGitHub <noreply@github.com>2022-01-08 19:43:42 (GMT)
commit8d59d2563b914b7208779834895c080c70cd94dd (patch)
treecba6217ebab091f8cfd22e9c0c604d3ae2d3f6e7 /Lib/test/test_enum.py
parentb6aa38f1ca79600f2ab46ac114ff36461a19c4a3 (diff)
downloadcpython-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.py35
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):