diff options
author | Ethan Furman <ethan@stoneleaf.us> | 2013-07-25 13:50:45 -0700 |
---|---|---|
committer | Ethan Furman <ethan@stoneleaf.us> | 2013-07-25 13:50:45 -0700 |
commit | b41803e3ef65624ce39a4bcf4caff6ff1184699f (patch) | |
tree | 8c3380a6dbce75d34e6058087881f9b9e7dd5c33 /Lib/test/test_enum.py | |
parent | 4d35e75ca069b51ffdac7b34dad4ffb77e72a598 (diff) | |
download | cpython-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.py | 16 |
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): |