Issue #22609: Constructors and update methods of mapping classes in the · python/cpython@20994f1 (original) (raw)
`@@ -905,6 +905,28 @@ def test_basics(self):
`
905
905
`self.assertEqual(c.setdefault('e', 5), 5)
`
906
906
`self.assertEqual(c['e'], 5)
`
907
907
``
``
908
`+
def test_init(self):
`
``
909
`+
self.assertEqual(list(Counter(self=42).items()), [('self', 42)])
`
``
910
`+
self.assertEqual(list(Counter(iterable=42).items()), [('iterable', 42)])
`
``
911
`+
self.assertEqual(list(Counter(iterable=None).items()), [('iterable', None)])
`
``
912
`+
self.assertRaises(TypeError, Counter, 42)
`
``
913
`+
self.assertRaises(TypeError, Counter, (), ())
`
``
914
`+
self.assertRaises(TypeError, Counter.init)
`
``
915
+
``
916
`+
def test_update(self):
`
``
917
`+
c = Counter()
`
``
918
`+
c.update(self=42)
`
``
919
`+
self.assertEqual(list(c.items()), [('self', 42)])
`
``
920
`+
c = Counter()
`
``
921
`+
c.update(iterable=42)
`
``
922
`+
self.assertEqual(list(c.items()), [('iterable', 42)])
`
``
923
`+
c = Counter()
`
``
924
`+
c.update(iterable=None)
`
``
925
`+
self.assertEqual(list(c.items()), [('iterable', None)])
`
``
926
`+
self.assertRaises(TypeError, Counter().update, 42)
`
``
927
`+
self.assertRaises(TypeError, Counter().update, {}, {})
`
``
928
`+
self.assertRaises(TypeError, Counter.update)
`
``
929
+
908
930
`def test_copying(self):
`
909
931
`# Check that counters are copyable, deepcopyable, picklable, and
`
910
932
`#have a repr/eval round-trip
`
`@@ -1006,6 +1028,16 @@ def test_subtract(self):
`
1006
1028
`c.subtract('aaaabbcce')
`
1007
1029
`self.assertEqual(c, Counter(a=-1, b=0, c=-1, d=1, e=-1))
`
1008
1030
``
``
1031
`+
c = Counter()
`
``
1032
`+
c.subtract(self=42)
`
``
1033
`+
self.assertEqual(list(c.items()), [('self', -42)])
`
``
1034
`+
c = Counter()
`
``
1035
`+
c.subtract(iterable=42)
`
``
1036
`+
self.assertEqual(list(c.items()), [('iterable', -42)])
`
``
1037
`+
self.assertRaises(TypeError, Counter().subtract, 42)
`
``
1038
`+
self.assertRaises(TypeError, Counter().subtract, {}, {})
`
``
1039
`+
self.assertRaises(TypeError, Counter.subtract)
`
``
1040
+
1009
1041
`class TestOrderedDict(unittest.TestCase):
`
1010
1042
``
1011
1043
`def test_init(self):
`
`@@ -1019,8 +1051,11 @@ def test_init(self):
`
1019
1051
`c=3, e=5).items()), pairs) # mixed input
`
1020
1052
``
1021
1053
`# make sure no positional args conflict with possible kwdargs
`
1022
``
`-
self.assertEqual(inspect.getargspec(OrderedDict.dict['init']).args,
`
1023
``
`-
['self'])
`
``
1054
`+
self.assertEqual(list(OrderedDict(self=42).items()), [('self', 42)])
`
``
1055
`+
self.assertEqual(list(OrderedDict(other=42).items()), [('other', 42)])
`
``
1056
`+
self.assertRaises(TypeError, OrderedDict, 42)
`
``
1057
`+
self.assertRaises(TypeError, OrderedDict, (), ())
`
``
1058
`+
self.assertRaises(TypeError, OrderedDict.init)
`
1024
1059
``
1025
1060
`# Make sure that direct calls to init do not clear previous contents
`
1026
1061
`d = OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 44), ('e', 55)])
`
`@@ -1065,6 +1100,10 @@ def test_update(self):
`
1065
1100
`self.assertEqual(list(d.items()),
`
1066
1101
` [('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5), ('f', 6), ('g', 7)])
`
1067
1102
``
``
1103
`+
self.assertRaises(TypeError, OrderedDict().update, 42)
`
``
1104
`+
self.assertRaises(TypeError, OrderedDict().update, (), ())
`
``
1105
`+
self.assertRaises(TypeError, OrderedDict.update)
`
``
1106
+
1068
1107
`def test_abc(self):
`
1069
1108
`self.assertIsInstance(OrderedDict(), MutableMapping)
`
1070
1109
`self.assertTrue(issubclass(OrderedDict, MutableMapping))
`