diff options
author | Ethan Furman <ethan@stoneleaf.us> | 2016-08-20 00:00:52 -0700 |
---|---|---|
committer | Ethan Furman <ethan@stoneleaf.us> | 2016-08-20 00:00:52 -0700 |
commit | 332dbc7325639d8ea0932d6322ec9f9c5a51c793 (patch) | |
tree | f00325b18a8b4effa62dfbb0b2211b00fd483f64 /Lib/test/test_enum.py | |
parent | 1cce732fcfdf6504bcfb53ae0201ac15288b0f65 (diff) | |
download | cpython-332dbc7325639d8ea0932d6322ec9f9c5a51c793.tar.gz cpython-332dbc7325639d8ea0932d6322ec9f9c5a51c793.zip |
Issue26988: remove AutoEnum
Diffstat (limited to 'Lib/test/test_enum.py')
-rw-r--r-- | Lib/test/test_enum.py | 324 |
1 files changed, 1 insertions, 323 deletions
diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 4a732f908ef..564c0e9f7da 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -3,7 +3,7 @@ import inspect import pydoc import unittest from collections import OrderedDict -from enum import EnumMeta, Enum, IntEnum, AutoEnum, unique +from enum import Enum, IntEnum, EnumMeta, unique from io import StringIO from pickle import dumps, loads, PicklingError, HIGHEST_PROTOCOL from test import support @@ -1570,328 +1570,6 @@ class TestEnum(unittest.TestCase): self.assertEqual(LabelledList.unprocessed, 1) self.assertEqual(LabelledList(1), LabelledList.unprocessed) - def test_ignore_as_str(self): - from datetime import timedelta - class Period(Enum, ignore='Period i'): - """ - different lengths of time - """ - def __new__(cls, value, period): - obj = object.__new__(cls) - obj._value_ = value - obj.period = period - return obj - Period = vars() - for i in range(367): - Period['Day%d' % i] = timedelta(days=i), 'day' - for i in range(53): - Period['Week%d' % i] = timedelta(days=i*7), 'week' - for i in range(13): - Period['Month%d' % i] = i, 'month' - OneDay = Day1 - OneWeek = Week1 - self.assertEqual(Period.Day7.value, timedelta(days=7)) - self.assertEqual(Period.Day7.period, 'day') - - def test_ignore_as_list(self): - from datetime import timedelta - class Period(Enum, ignore=['Period', 'i']): - """ - different lengths of time - """ - def __new__(cls, value, period): - obj = object.__new__(cls) - obj._value_ = value - obj.period = period - return obj - Period = vars() - for i in range(367): - Period['Day%d' % i] = timedelta(days=i), 'day' - for i in range(53): - Period['Week%d' % i] = timedelta(days=i*7), 'week' - for i in range(13): - Period['Month%d' % i] = i, 'month' - OneDay = Day1 - OneWeek = Week1 - self.assertEqual(Period.Day7.value, timedelta(days=7)) - self.assertEqual(Period.Day7.period, 'day') - - def test_new_with_no_value_and_int_base_class(self): - class NoValue(int, Enum): - def __new__(cls, value): - obj = int.__new__(cls, value) - obj.index = len(cls.__members__) - return obj - this = 1 - that = 2 - self.assertEqual(list(NoValue), [NoValue.this, NoValue.that]) - self.assertEqual(NoValue.this, 1) - self.assertEqual(NoValue.this.value, 1) - self.assertEqual(NoValue.this.index, 0) - self.assertEqual(NoValue.that, 2) - self.assertEqual(NoValue.that.value, 2) - self.assertEqual(NoValue.that.index, 1) - - def test_new_with_no_value(self): - class NoValue(Enum): - def __new__(cls, value): - obj = object.__new__(cls) - obj.index = len(cls.__members__) - return obj - this = 1 - that = 2 - self.assertEqual(list(NoValue), [NoValue.this, NoValue.that]) - self.assertEqual(NoValue.this.value, 1) - self.assertEqual(NoValue.this.index, 0) - self.assertEqual(NoValue.that.value, 2) - self.assertEqual(NoValue.that.index, 1) - - -class TestAutoNumber(unittest.TestCase): - - def test_autonumbering(self): - class Color(AutoEnum): - red - green - blue - self.assertEqual(list(Color), [Color.red, Color.green, Color.blue]) - self.assertEqual(Color.red.value, 1) - self.assertEqual(Color.green.value, 2) - self.assertEqual(Color.blue.value, 3) - - def test_autointnumbering(self): - class Color(int, AutoEnum): - red - green - blue - self.assertTrue(isinstance(Color.red, int)) - self.assertEqual(Color.green, 2) - self.assertTrue(Color.blue > Color.red) - - def test_autonumbering_with_start(self): - class Color(AutoEnum, start=7): - red - green - blue - self.assertEqual(list(Color), [Color.red, Color.green, Color.blue]) - self.assertEqual(Color.red.value, 7) - self.assertEqual(Color.green.value, 8) - self.assertEqual(Color.blue.value, 9) - - def test_autonumbering_with_start_and_skip(self): - class Color(AutoEnum, start=7): - red - green - blue = 11 - brown - self.assertEqual(list(Color), [Color.red, Color.green, Color.blue, Color.brown]) - self.assertEqual(Color.red.value, 7) - self.assertEqual(Color.green.value, 8) - self.assertEqual(Color.blue.value, 11) - self.assertEqual(Color.brown.value, 12) - - - def test_badly_overridden_ignore(self): - with self.assertRaisesRegex(TypeError, "'int' object is not callable"): - class Color(AutoEnum): - _ignore_ = () - red - green - blue - @property - def whatever(self): - pass - with self.assertRaisesRegex(TypeError, "'int' object is not callable"): - class Color(AutoEnum, ignore=None): - red - green - blue - @property - def whatever(self): - pass - with self.assertRaisesRegex(TypeError, "'int' object is not callable"): - class Color(AutoEnum, ignore='classmethod staticmethod'): - red - green - blue - @property - def whatever(self): - pass - - def test_property(self): - class Color(AutoEnum): - red - green - blue - @property - def cap_name(self): - return self.name.title() - self.assertEqual(Color.blue.cap_name, 'Blue') - - def test_magic_turns_off(self): - with self.assertRaisesRegex(NameError, "brown"): - class Color(AutoEnum): - red - green - blue - @property - def cap_name(self): - return self.name.title() - brown - - with self.assertRaisesRegex(NameError, "rose"): - class Color(AutoEnum): - red - green - blue - def hello(self): - print('Hello! My serial is %s.' % self.value) - rose - - with self.assertRaisesRegex(NameError, "cyan"): - class Color(AutoEnum): - red - green - blue - def __init__(self, *args): - pass - cyan - - -class TestGenerateMethod(unittest.TestCase): - - def test_autonaming(self): - class Color(Enum): - def _generate_next_value_(name, start, count, last_value): - return name - Red - Green - Blue - self.assertEqual(list(Color), [Color.Red, Color.Green, Color.Blue]) - self.assertEqual(Color.Red.value, 'Red') - self.assertEqual(Color.Green.value, 'Green') - self.assertEqual(Color.Blue.value, 'Blue') - - def test_autonamestr(self): - class Color(str, Enum): - def _generate_next_value_(name, start, count, last_value): - return name - Red - Green - Blue - self.assertTrue(isinstance(Color.Red, str)) - self.assertEqual(Color.Green, 'Green') - self.assertTrue(Color.Blue < Color.Red) - - def test_generate_as_staticmethod(self): - class Color(str, Enum): - @staticmethod - def _generate_next_value_(name, start, count, last_value): - return name.lower() - Red - Green - Blue - self.assertTrue(isinstance(Color.Red, str)) - self.assertEqual(Color.Green, 'green') - self.assertTrue(Color.Blue < Color.Red) - - - def test_overridden_ignore(self): - with self.assertRaisesRegex(TypeError, "'str' object is not callable"): - class Color(Enum): - def _generate_next_value_(name, start, count, last_value): - return name - _ignore_ = () - red - green - blue - @property - def whatever(self): - pass - with self.assertRaisesRegex(TypeError, "'str' object is not callable"): - class Color(Enum, ignore=None): - def _generate_next_value_(name, start, count, last_value): - return name - red - green - blue - @property - def whatever(self): - pass - - def test_property(self): - class Color(Enum): - def _generate_next_value_(name, start, count, last_value): - return name - red - green - blue - @property - def upper_name(self): - return self.name.upper() - self.assertEqual(Color.blue.upper_name, 'BLUE') - - def test_magic_turns_off(self): - with self.assertRaisesRegex(NameError, "brown"): - class Color(Enum): - def _generate_next_value_(name, start, count, last_value): - return name - red - green - blue - @property - def cap_name(self): - return self.name.title() - brown - - with self.assertRaisesRegex(NameError, "rose"): - class Color(Enum): - def _generate_next_value_(name, start, count, last_value): - return name - red - green - blue - def hello(self): - print('Hello! My value %s.' % self.value) - rose - - with self.assertRaisesRegex(NameError, "cyan"): - class Color(Enum): - def _generate_next_value_(name, start, count, last_value): - return name - red - green - blue - def __init__(self, *args): - pass - cyan - - def test_powers_of_two(self): - class Bits(Enum): - def _generate_next_value_(name, start, count, last_value): - return 2 ** count - one - two - four - eight - self.assertEqual(Bits.one.value, 1) - self.assertEqual(Bits.two.value, 2) - self.assertEqual(Bits.four.value, 4) - self.assertEqual(Bits.eight.value, 8) - - def test_powers_of_two_as_int(self): - class Bits(int, Enum): - def _generate_next_value_(name, start, count, last_value): - return 2 ** count - one - two - four - eight - self.assertEqual(Bits.one, 1) - self.assertEqual(Bits.two, 2) - self.assertEqual(Bits.four, 4) - self.assertEqual(Bits.eight, 8) - class TestUnique(unittest.TestCase): |