Mercurial > cpython-lru_cache-weakref
diff Lib/test/test_enum.py @ 84826:95e1d0efd896
Close #18545: now only executes member_type if no _value_ is assigned in __new__.
| author | Ethan Furman <ethan@stoneleaf.us> |
|---|---|
| date | Thu, 25 Jul 2013 13:50:45 -0700 |
| parents | 511c4daac102 |
| children | b034418e840b |
line wrap: on
line diff
--- a/Lib/test/test_enum.py Thu Jul 25 16:12:01 2013 -0400 +++ b/Lib/test/test_enum.py Thu Jul 25 13:50:45 2013 -0700 @@ -934,6 +934,22 @@ 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):
