mirror of
https://github.com/python/cpython.git
synced 2025-08-27 12:16:04 +00:00
issue23591: add docs; code cleanup; more tests
This commit is contained in:
parent
c19f00b238
commit
65a5a47d79
3 changed files with 213 additions and 78 deletions
|
@ -3,7 +3,7 @@ import inspect
|
|||
import pydoc
|
||||
import unittest
|
||||
from collections import OrderedDict
|
||||
from enum import Enum, IntEnum, EnumMeta, Flags, IntFlags, unique
|
||||
from enum import Enum, IntEnum, EnumMeta, Flag, IntFlag, unique
|
||||
from io import StringIO
|
||||
from pickle import dumps, loads, PicklingError, HIGHEST_PROTOCOL
|
||||
from test import support
|
||||
|
@ -33,6 +33,14 @@ try:
|
|||
except Exception as exc:
|
||||
FloatStooges = exc
|
||||
|
||||
try:
|
||||
class FlagStooges(Flag):
|
||||
LARRY = 1
|
||||
CURLY = 2
|
||||
MOE = 3
|
||||
except Exception as exc:
|
||||
FlagStooges = exc
|
||||
|
||||
# for pickle test and subclass tests
|
||||
try:
|
||||
class StrEnum(str, Enum):
|
||||
|
@ -1633,13 +1641,13 @@ class TestOrder(unittest.TestCase):
|
|||
verde = green
|
||||
|
||||
|
||||
class TestFlags(unittest.TestCase):
|
||||
class TestFlag(unittest.TestCase):
|
||||
"""Tests of the Flags."""
|
||||
|
||||
class Perm(Flags):
|
||||
class Perm(Flag):
|
||||
R, W, X = 4, 2, 1
|
||||
|
||||
class Open(Flags):
|
||||
class Open(Flag):
|
||||
RO = 0
|
||||
WO = 1
|
||||
RW = 2
|
||||
|
@ -1760,7 +1768,7 @@ class TestFlags(unittest.TestCase):
|
|||
self.assertIs((Open.WO|Open.CE) & ~Open.WO, Open.CE)
|
||||
|
||||
def test_programatic_function_string(self):
|
||||
Perm = Flags('Perm', 'R W X')
|
||||
Perm = Flag('Perm', 'R W X')
|
||||
lst = list(Perm)
|
||||
self.assertEqual(len(lst), len(Perm))
|
||||
self.assertEqual(len(Perm), 3, Perm)
|
||||
|
@ -1775,7 +1783,7 @@ class TestFlags(unittest.TestCase):
|
|||
self.assertIs(type(e), Perm)
|
||||
|
||||
def test_programatic_function_string_with_start(self):
|
||||
Perm = Flags('Perm', 'R W X', start=8)
|
||||
Perm = Flag('Perm', 'R W X', start=8)
|
||||
lst = list(Perm)
|
||||
self.assertEqual(len(lst), len(Perm))
|
||||
self.assertEqual(len(Perm), 3, Perm)
|
||||
|
@ -1790,7 +1798,7 @@ class TestFlags(unittest.TestCase):
|
|||
self.assertIs(type(e), Perm)
|
||||
|
||||
def test_programatic_function_string_list(self):
|
||||
Perm = Flags('Perm', ['R', 'W', 'X'])
|
||||
Perm = Flag('Perm', ['R', 'W', 'X'])
|
||||
lst = list(Perm)
|
||||
self.assertEqual(len(lst), len(Perm))
|
||||
self.assertEqual(len(Perm), 3, Perm)
|
||||
|
@ -1805,7 +1813,7 @@ class TestFlags(unittest.TestCase):
|
|||
self.assertIs(type(e), Perm)
|
||||
|
||||
def test_programatic_function_iterable(self):
|
||||
Perm = Flags('Perm', (('R', 2), ('W', 8), ('X', 32)))
|
||||
Perm = Flag('Perm', (('R', 2), ('W', 8), ('X', 32)))
|
||||
lst = list(Perm)
|
||||
self.assertEqual(len(lst), len(Perm))
|
||||
self.assertEqual(len(Perm), 3, Perm)
|
||||
|
@ -1820,7 +1828,7 @@ class TestFlags(unittest.TestCase):
|
|||
self.assertIs(type(e), Perm)
|
||||
|
||||
def test_programatic_function_from_dict(self):
|
||||
Perm = Flags('Perm', OrderedDict((('R', 2), ('W', 8), ('X', 32))))
|
||||
Perm = Flag('Perm', OrderedDict((('R', 2), ('W', 8), ('X', 32))))
|
||||
lst = list(Perm)
|
||||
self.assertEqual(len(lst), len(Perm))
|
||||
self.assertEqual(len(Perm), 3, Perm)
|
||||
|
@ -1834,16 +1842,42 @@ class TestFlags(unittest.TestCase):
|
|||
self.assertIn(e, Perm)
|
||||
self.assertIs(type(e), Perm)
|
||||
|
||||
def test_pickle(self):
|
||||
if isinstance(FlagStooges, Exception):
|
||||
raise FlagStooges
|
||||
test_pickle_dump_load(self.assertIs, FlagStooges.CURLY|FlagStooges.MOE)
|
||||
test_pickle_dump_load(self.assertIs, FlagStooges)
|
||||
|
||||
class TestIntFlags(unittest.TestCase):
|
||||
|
||||
def test_containment(self):
|
||||
Perm = self.Perm
|
||||
R, W, X = Perm
|
||||
RW = R | W
|
||||
RX = R | X
|
||||
WX = W | X
|
||||
RWX = R | W | X
|
||||
self.assertTrue(R in RW)
|
||||
self.assertTrue(R in RX)
|
||||
self.assertTrue(R in RWX)
|
||||
self.assertTrue(W in RW)
|
||||
self.assertTrue(W in WX)
|
||||
self.assertTrue(W in RWX)
|
||||
self.assertTrue(X in RX)
|
||||
self.assertTrue(X in WX)
|
||||
self.assertTrue(X in RWX)
|
||||
self.assertFalse(R in WX)
|
||||
self.assertFalse(W in RX)
|
||||
self.assertFalse(X in RW)
|
||||
|
||||
class TestIntFlag(unittest.TestCase):
|
||||
"""Tests of the IntFlags."""
|
||||
|
||||
class Perm(IntFlags):
|
||||
class Perm(IntFlag):
|
||||
X = 1 << 0
|
||||
W = 1 << 1
|
||||
R = 1 << 2
|
||||
|
||||
class Open(IntFlags):
|
||||
class Open(IntFlag):
|
||||
RO = 0
|
||||
WO = 1
|
||||
RW = 2
|
||||
|
@ -2003,7 +2037,7 @@ class TestIntFlags(unittest.TestCase):
|
|||
self.assertIs((Open.WO|Open.CE) & ~Open.WO, Open.CE)
|
||||
|
||||
def test_programatic_function_string(self):
|
||||
Perm = IntFlags('Perm', 'R W X')
|
||||
Perm = IntFlag('Perm', 'R W X')
|
||||
lst = list(Perm)
|
||||
self.assertEqual(len(lst), len(Perm))
|
||||
self.assertEqual(len(Perm), 3, Perm)
|
||||
|
@ -2019,7 +2053,7 @@ class TestIntFlags(unittest.TestCase):
|
|||
self.assertIs(type(e), Perm)
|
||||
|
||||
def test_programatic_function_string_with_start(self):
|
||||
Perm = IntFlags('Perm', 'R W X', start=8)
|
||||
Perm = IntFlag('Perm', 'R W X', start=8)
|
||||
lst = list(Perm)
|
||||
self.assertEqual(len(lst), len(Perm))
|
||||
self.assertEqual(len(Perm), 3, Perm)
|
||||
|
@ -2035,7 +2069,7 @@ class TestIntFlags(unittest.TestCase):
|
|||
self.assertIs(type(e), Perm)
|
||||
|
||||
def test_programatic_function_string_list(self):
|
||||
Perm = IntFlags('Perm', ['R', 'W', 'X'])
|
||||
Perm = IntFlag('Perm', ['R', 'W', 'X'])
|
||||
lst = list(Perm)
|
||||
self.assertEqual(len(lst), len(Perm))
|
||||
self.assertEqual(len(Perm), 3, Perm)
|
||||
|
@ -2051,7 +2085,7 @@ class TestIntFlags(unittest.TestCase):
|
|||
self.assertIs(type(e), Perm)
|
||||
|
||||
def test_programatic_function_iterable(self):
|
||||
Perm = IntFlags('Perm', (('R', 2), ('W', 8), ('X', 32)))
|
||||
Perm = IntFlag('Perm', (('R', 2), ('W', 8), ('X', 32)))
|
||||
lst = list(Perm)
|
||||
self.assertEqual(len(lst), len(Perm))
|
||||
self.assertEqual(len(Perm), 3, Perm)
|
||||
|
@ -2067,7 +2101,7 @@ class TestIntFlags(unittest.TestCase):
|
|||
self.assertIs(type(e), Perm)
|
||||
|
||||
def test_programatic_function_from_dict(self):
|
||||
Perm = IntFlags('Perm', OrderedDict((('R', 2), ('W', 8), ('X', 32))))
|
||||
Perm = IntFlag('Perm', OrderedDict((('R', 2), ('W', 8), ('X', 32))))
|
||||
lst = list(Perm)
|
||||
self.assertEqual(len(lst), len(Perm))
|
||||
self.assertEqual(len(Perm), 3, Perm)
|
||||
|
@ -2083,6 +2117,26 @@ class TestIntFlags(unittest.TestCase):
|
|||
self.assertIs(type(e), Perm)
|
||||
|
||||
|
||||
def test_containment(self):
|
||||
Perm = self.Perm
|
||||
R, W, X = Perm
|
||||
RW = R | W
|
||||
RX = R | X
|
||||
WX = W | X
|
||||
RWX = R | W | X
|
||||
self.assertTrue(R in RW)
|
||||
self.assertTrue(R in RX)
|
||||
self.assertTrue(R in RWX)
|
||||
self.assertTrue(W in RW)
|
||||
self.assertTrue(W in WX)
|
||||
self.assertTrue(W in RWX)
|
||||
self.assertTrue(X in RX)
|
||||
self.assertTrue(X in WX)
|
||||
self.assertTrue(X in RWX)
|
||||
self.assertFalse(R in WX)
|
||||
self.assertFalse(W in RX)
|
||||
self.assertFalse(X in RW)
|
||||
|
||||
class TestUnique(unittest.TestCase):
|
||||
|
||||
def test_unique_clean(self):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue