Issue #22609: Constructors and update methods of mapping classes in the · python/cpython@ae5cb21 (original) (raw)

`@@ -1084,6 +1084,28 @@ def test_basics(self):

`

1084

1084

`self.assertEqual(c.setdefault('e', 5), 5)

`

1085

1085

`self.assertEqual(c['e'], 5)

`

1086

1086

``

``

1087

`+

def test_init(self):

`

``

1088

`+

self.assertEqual(list(Counter(self=42).items()), [('self', 42)])

`

``

1089

`+

self.assertEqual(list(Counter(iterable=42).items()), [('iterable', 42)])

`

``

1090

`+

self.assertEqual(list(Counter(iterable=None).items()), [('iterable', None)])

`

``

1091

`+

self.assertRaises(TypeError, Counter, 42)

`

``

1092

`+

self.assertRaises(TypeError, Counter, (), ())

`

``

1093

`+

self.assertRaises(TypeError, Counter.init)

`

``

1094

+

``

1095

`+

def test_update(self):

`

``

1096

`+

c = Counter()

`

``

1097

`+

c.update(self=42)

`

``

1098

`+

self.assertEqual(list(c.items()), [('self', 42)])

`

``

1099

`+

c = Counter()

`

``

1100

`+

c.update(iterable=42)

`

``

1101

`+

self.assertEqual(list(c.items()), [('iterable', 42)])

`

``

1102

`+

c = Counter()

`

``

1103

`+

c.update(iterable=None)

`

``

1104

`+

self.assertEqual(list(c.items()), [('iterable', None)])

`

``

1105

`+

self.assertRaises(TypeError, Counter().update, 42)

`

``

1106

`+

self.assertRaises(TypeError, Counter().update, {}, {})

`

``

1107

`+

self.assertRaises(TypeError, Counter.update)

`

``

1108

+

1087

1109

`def test_copying(self):

`

1088

1110

`# Check that counters are copyable, deepcopyable, picklable, and

`

1089

1111

`#have a repr/eval round-trip

`

`@@ -1205,6 +1227,16 @@ def test_subtract(self):

`

1205

1227

`c.subtract('aaaabbcce')

`

1206

1228

`self.assertEqual(c, Counter(a=-1, b=0, c=-1, d=1, e=-1))

`

1207

1229

``

``

1230

`+

c = Counter()

`

``

1231

`+

c.subtract(self=42)

`

``

1232

`+

self.assertEqual(list(c.items()), [('self', -42)])

`

``

1233

`+

c = Counter()

`

``

1234

`+

c.subtract(iterable=42)

`

``

1235

`+

self.assertEqual(list(c.items()), [('iterable', -42)])

`

``

1236

`+

self.assertRaises(TypeError, Counter().subtract, 42)

`

``

1237

`+

self.assertRaises(TypeError, Counter().subtract, {}, {})

`

``

1238

`+

self.assertRaises(TypeError, Counter.subtract)

`

``

1239

+

1208

1240

`def test_unary(self):

`

1209

1241

`c = Counter(a=-5, b=0, c=5, d=10, e=15,g=40)

`

1210

1242

`self.assertEqual(dict(+c), dict(c=5, d=10, e=15, g=40))

`

`@@ -1255,8 +1287,11 @@ def test_init(self):

`

1255

1287

`c=3, e=5).items()), pairs) # mixed input

`

1256

1288

``

1257

1289

`# make sure no positional args conflict with possible kwdargs

`

1258

``

`-

self.assertEqual(inspect.getargspec(OrderedDict.dict['init']).args,

`

1259

``

`-

['self'])

`

``

1290

`+

self.assertEqual(list(OrderedDict(self=42).items()), [('self', 42)])

`

``

1291

`+

self.assertEqual(list(OrderedDict(other=42).items()), [('other', 42)])

`

``

1292

`+

self.assertRaises(TypeError, OrderedDict, 42)

`

``

1293

`+

self.assertRaises(TypeError, OrderedDict, (), ())

`

``

1294

`+

self.assertRaises(TypeError, OrderedDict.init)

`

1260

1295

``

1261

1296

`# Make sure that direct calls to init do not clear previous contents

`

1262

1297

`d = OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 44), ('e', 55)])

`

`@@ -1301,6 +1336,10 @@ def test_update(self):

`

1301

1336

`self.assertEqual(list(d.items()),

`

1302

1337

` [('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5), ('f', 6), ('g', 7)])

`

1303

1338

``

``

1339

`+

self.assertRaises(TypeError, OrderedDict().update, 42)

`

``

1340

`+

self.assertRaises(TypeError, OrderedDict().update, (), ())

`

``

1341

`+

self.assertRaises(TypeError, OrderedDict.update)

`

``

1342

+

1304

1343

`def test_abc(self):

`

1305

1344

`self.assertIsInstance(OrderedDict(), MutableMapping)

`

1306

1345

`self.assertTrue(issubclass(OrderedDict, MutableMapping))

`

`@@ -1532,6 +1571,24 @@ def test_popitem(self):

`

1532

1571

`d = self._empty_mapping()

`

1533

1572

`self.assertRaises(KeyError, d.popitem)

`

1534

1573

``

``

1574

`+

class TestUserDict(unittest.TestCase):

`

``

1575

+

``

1576

`+

def test_init(self):

`

``

1577

`+

self.assertEqual(list(UserDict(self=42).items()), [('self', 42)])

`

``

1578

`+

self.assertEqual(list(UserDict(dict=42).items()), [('dict', 42)])

`

``

1579

`+

self.assertEqual(list(UserDict(dict=None).items()), [('dict', None)])

`

``

1580

`+

self.assertRaises(TypeError, UserDict, 42)

`

``

1581

`+

self.assertRaises(TypeError, UserDict, (), ())

`

``

1582

`+

self.assertRaises(TypeError, UserDict.init)

`

``

1583

+

``

1584

`+

def test_update(self):

`

``

1585

`+

d = UserDict()

`

``

1586

`+

d.update(self=42)

`

``

1587

`+

self.assertEqual(list(d.items()), [('self', 42)])

`

``

1588

`+

self.assertRaises(TypeError, UserDict().update, 42)

`

``

1589

`+

self.assertRaises(TypeError, UserDict().update, {}, {})

`

``

1590

`+

self.assertRaises(TypeError, UserDict.update)

`

``

1591

+

1535

1592

``

1536

1593

`################################################################################

`

1537

1594

`### Run tests

`

`@@ -1543,7 +1600,8 @@ def test_main(verbose=None):

`

1543

1600

`NamedTupleDocs = doctest.DocTestSuite(module=collections)

`

1544

1601

`test_classes = [TestNamedTuple, NamedTupleDocs, TestOneTrickPonyABCs,

`

1545

1602

`TestCollectionABCs, TestCounter, TestChainMap,

`

1546

``

`-

TestOrderedDict, GeneralMappingTests, SubclassMappingTests]

`

``

1603

`+

TestOrderedDict, GeneralMappingTests, SubclassMappingTests,

`

``

1604

`+

TestUserDict,]

`

1547

1605

`support.run_unittest(*test_classes)

`

1548

1606

`support.run_doctest(collections, verbose)

`

1549

1607

``