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

`