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
``