aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/test_enum.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_enum.py')
-rw-r--r--Lib/test/test_enum.py57
1 files changed, 47 insertions, 10 deletions
diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py
index d8cb5261244..2dd585f246d 100644
--- a/Lib/test/test_enum.py
+++ b/Lib/test/test_enum.py
@@ -36,7 +36,7 @@ def load_tests(loader, tests, ignore):
optionflags=doctest.ELLIPSIS|doctest.NORMALIZE_WHITESPACE,
))
howto_tests = os.path.join(REPO_ROOT, 'Doc/howto/enum.rst')
- if os.path.exists(howto_tests):
+ if os.path.exists(howto_tests) and sys.float_repr_style == 'short':
tests.addTests(doctest.DocFileSuite(
howto_tests,
module_relative=False,
@@ -434,9 +434,9 @@ class _EnumTests:
def spam(cls):
pass
#
- self.assertTrue(hasattr(Season, 'spam'))
+ self.assertHasAttr(Season, 'spam')
del Season.spam
- self.assertFalse(hasattr(Season, 'spam'))
+ self.assertNotHasAttr(Season, 'spam')
#
with self.assertRaises(AttributeError):
del Season.SPRING
@@ -1002,12 +1002,18 @@ class _FlagTests:
self.assertIs(~(A|B), OpenAB(252))
self.assertIs(~AB_MASK, OpenAB(0))
self.assertIs(~OpenAB(0), AB_MASK)
+ self.assertIs(OpenAB(~4), OpenAB(251))
else:
self.assertIs(~A, B)
self.assertIs(~B, A)
+ self.assertIs(OpenAB(~1), B)
+ self.assertIs(OpenAB(~2), A)
self.assertIs(~(A|B), OpenAB(0))
self.assertIs(~AB_MASK, OpenAB(0))
self.assertIs(~OpenAB(0), (A|B))
+ self.assertIs(OpenAB(~3), OpenAB(0))
+ self.assertIs(OpenAB(~4), OpenAB(3))
+ self.assertIs(OpenAB(~33), B)
#
class OpenXYZ(self.enum_type):
X = 4
@@ -1031,6 +1037,9 @@ class _FlagTests:
self.assertIs(~X, Y|Z)
self.assertIs(~Y, X|Z)
self.assertIs(~Z, X|Y)
+ self.assertIs(OpenXYZ(~4), Y|Z)
+ self.assertIs(OpenXYZ(~2), X|Z)
+ self.assertIs(OpenXYZ(~1), X|Y)
self.assertIs(~(X|Y), Z)
self.assertIs(~(X|Z), Y)
self.assertIs(~(Y|Z), X)
@@ -1038,6 +1047,28 @@ class _FlagTests:
self.assertIs(~XYZ_MASK, OpenXYZ(0))
self.assertTrue(~OpenXYZ(0), (X|Y|Z))
+ def test_assigned_negative_value(self):
+ class X(self.enum_type):
+ A = auto()
+ B = auto()
+ C = A | B
+ D = ~A
+ self.assertEqual(list(X), [X.A, X.B])
+ self.assertIs(~X.A, X.B)
+ self.assertIs(X.D, X.B)
+ self.assertEqual(X.D.value, 2)
+ #
+ class Y(self.enum_type):
+ A = auto()
+ B = auto()
+ C = A | B
+ D = ~A
+ E = auto()
+ self.assertEqual(list(Y), [Y.A, Y.B, Y.E])
+ self.assertIs(~Y.A, Y.B|Y.E)
+ self.assertIs(Y.D, Y.B|Y.E)
+ self.assertEqual(Y.D.value, 6)
+
class TestPlainEnumClass(_EnumTests, _PlainOutputTests, unittest.TestCase):
enum_type = Enum
@@ -2652,12 +2683,12 @@ class TestSpecial(unittest.TestCase):
OneDay = day_1
OneWeek = week_1
OneMonth = month_1
- self.assertFalse(hasattr(Period, '_ignore_'))
- self.assertFalse(hasattr(Period, 'Period'))
- self.assertFalse(hasattr(Period, 'i'))
- self.assertTrue(isinstance(Period.day_1, timedelta))
- self.assertTrue(Period.month_1 is Period.day_30)
- self.assertTrue(Period.week_4 is Period.day_28)
+ self.assertNotHasAttr(Period, '_ignore_')
+ self.assertNotHasAttr(Period, 'Period')
+ self.assertNotHasAttr(Period, 'i')
+ self.assertIsInstance(Period.day_1, timedelta)
+ self.assertIs(Period.month_1, Period.day_30)
+ self.assertIs(Period.week_4, Period.day_28)
def test_nonhash_value(self):
class AutoNumberInAList(Enum):
@@ -2877,7 +2908,7 @@ class TestSpecial(unittest.TestCase):
self.assertEqual(str(ReformedColor.BLUE), 'blue')
self.assertEqual(ReformedColor.RED.behavior(), 'booyah')
self.assertEqual(ConfusedColor.RED.social(), "what's up?")
- self.assertTrue(issubclass(ReformedColor, int))
+ self.assertIsSubclass(ReformedColor, int)
def test_multiple_inherited_mixin(self):
@unique
@@ -3680,6 +3711,8 @@ class OldTestFlag(unittest.TestCase):
C = 4 | B
#
self.assertTrue(SkipFlag.C in (SkipFlag.A|SkipFlag.C))
+ self.assertTrue(SkipFlag.B in SkipFlag.C)
+ self.assertIs(SkipFlag(~1), SkipFlag.B)
self.assertRaisesRegex(ValueError, 'SkipFlag.. invalid value 42', SkipFlag, 42)
#
class SkipIntFlag(enum.IntFlag):
@@ -3688,6 +3721,8 @@ class OldTestFlag(unittest.TestCase):
C = 4 | B
#
self.assertTrue(SkipIntFlag.C in (SkipIntFlag.A|SkipIntFlag.C))
+ self.assertTrue(SkipIntFlag.B in SkipIntFlag.C)
+ self.assertIs(SkipIntFlag(~1), SkipIntFlag.B|SkipIntFlag.C)
self.assertEqual(SkipIntFlag(42).value, 42)
#
class MethodHint(Flag):
@@ -4727,6 +4762,8 @@ class TestVerify(unittest.TestCase):
BLUE = 4
WHITE = -1
# no error means success
+ self.assertEqual(list(Color.WHITE), [Color.RED, Color.GREEN, Color.BLUE])
+ self.assertEqual(Color.WHITE.value, 7)
class TestInternals(unittest.TestCase):