summaryrefslogtreecommitdiff
path: root/Lib/test/test_enum.py
diff options
context:
space:
mode:
authorEthan Furman <ethan@stoneleaf.us>2013-07-25 13:50:45 -0700
committerEthan Furman <ethan@stoneleaf.us>2013-07-25 13:50:45 -0700
commitb41803e3ef65624ce39a4bcf4caff6ff1184699f (patch)
tree8c3380a6dbce75d34e6058087881f9b9e7dd5c33 /Lib/test/test_enum.py
parent4d35e75ca069b51ffdac7b34dad4ffb77e72a598 (diff)
downloadcpython-git-b41803e3ef65624ce39a4bcf4caff6ff1184699f.tar.gz
Close #18545: now only executes member_type if no _value_ is assigned in __new__.
Diffstat (limited to 'Lib/test/test_enum.py')
-rw-r--r--Lib/test/test_enum.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py
index d0b4a1c089..91c4b69ef5 100644
--- a/Lib/test/test_enum.py
+++ b/Lib/test/test_enum.py
@@ -934,6 +934,22 @@ class TestEnum(unittest.TestCase):
self.assertEqual(ColorInAList.red.value, [1])
self.assertEqual(ColorInAList([1]), ColorInAList.red)
+ def test_conflicting_types_resolved_in_new(self):
+ class LabelledIntEnum(int, Enum):
+ def __new__(cls, *args):
+ value, label = args
+ obj = int.__new__(cls, value)
+ obj.label = label
+ obj._value_ = value
+ return obj
+
+ class LabelledList(LabelledIntEnum):
+ unprocessed = (1, "Unprocessed")
+ payment_complete = (2, "Payment Complete")
+
+ self.assertEqual(list(LabelledList), [LabelledList.unprocessed, LabelledList.payment_complete])
+ self.assertEqual(LabelledList.unprocessed, 1)
+ self.assertEqual(LabelledList(1), LabelledList.unprocessed)
class TestUnique(unittest.TestCase):