@@ -1137,6 +1137,28 @@ def test_basics(self):
11371137 self .assertEqual (c .setdefault ('e' , 5 ), 5 )
11381138 self .assertEqual (c ['e' ], 5 )
11391139
1140+ def test_init (self ):
1141+ self .assertEqual (list (Counter (self = 42 ).items ()), [('self' , 42 )])
1142+ self .assertEqual (list (Counter (iterable = 42 ).items ()), [('iterable' , 42 )])
1143+ self .assertEqual (list (Counter (iterable = None ).items ()), [('iterable' , None )])
1144+ self .assertRaises (TypeError , Counter , 42 )
1145+ self .assertRaises (TypeError , Counter , (), ())
1146+ self .assertRaises (TypeError , Counter .__init__ )
1147+
1148+ def test_update (self ):
1149+ c = Counter ()
1150+ c .update (self = 42 )
1151+ self .assertEqual (list (c .items ()), [('self' , 42 )])
1152+ c = Counter ()
1153+ c .update (iterable = 42 )
1154+ self .assertEqual (list (c .items ()), [('iterable' , 42 )])
1155+ c = Counter ()
1156+ c .update (iterable = None )
1157+ self .assertEqual (list (c .items ()), [('iterable' , None )])
1158+ self .assertRaises (TypeError , Counter ().update , 42 )
1159+ self .assertRaises (TypeError , Counter ().update , {}, {})
1160+ self .assertRaises (TypeError , Counter .update )
1161+
11401162 def test_copying (self ):
11411163 # Check that counters are copyable, deepcopyable, picklable, and
11421164 #have a repr/eval round-trip
@@ -1258,6 +1280,16 @@ def test_subtract(self):
12581280 c .subtract ('aaaabbcce' )
12591281 self .assertEqual (c , Counter (a = - 1 , b = 0 , c = - 1 , d = 1 , e = - 1 ))
12601282
1283+ c = Counter ()
1284+ c .subtract (self = 42 )
1285+ self .assertEqual (list (c .items ()), [('self' , - 42 )])
1286+ c = Counter ()
1287+ c .subtract (iterable = 42 )
1288+ self .assertEqual (list (c .items ()), [('iterable' , - 42 )])
1289+ self .assertRaises (TypeError , Counter ().subtract , 42 )
1290+ self .assertRaises (TypeError , Counter ().subtract , {}, {})
1291+ self .assertRaises (TypeError , Counter .subtract )
1292+
12611293 def test_unary (self ):
12621294 c = Counter (a = - 5 , b = 0 , c = 5 , d = 10 , e = 15 ,g = 40 )
12631295 self .assertEqual (dict (+ c ), dict (c = 5 , d = 10 , e = 15 , g = 40 ))
@@ -1308,8 +1340,11 @@ def test_init(self):
13081340 c = 3 , e = 5 ).items ()), pairs ) # mixed input
13091341
13101342 # make sure no positional args conflict with possible kwdargs
1311- self .assertEqual (inspect .getargspec (OrderedDict .__dict__ ['__init__' ]).args ,
1312- ['self' ])
1343+ self .assertEqual (list (OrderedDict (self = 42 ).items ()), [('self' , 42 )])
1344+ self .assertEqual (list (OrderedDict (other = 42 ).items ()), [('other' , 42 )])
1345+ self .assertRaises (TypeError , OrderedDict , 42 )
1346+ self .assertRaises (TypeError , OrderedDict , (), ())
1347+ self .assertRaises (TypeError , OrderedDict .__init__ )
13131348
13141349 # Make sure that direct calls to __init__ do not clear previous contents
13151350 d = OrderedDict ([('a' , 1 ), ('b' , 2 ), ('c' , 3 ), ('d' , 44 ), ('e' , 55 )])
@@ -1354,6 +1389,10 @@ def test_update(self):
13541389 self .assertEqual (list (d .items ()),
13551390 [('a' , 1 ), ('b' , 2 ), ('c' , 3 ), ('d' , 4 ), ('e' , 5 ), ('f' , 6 ), ('g' , 7 )])
13561391
1392+ self .assertRaises (TypeError , OrderedDict ().update , 42 )
1393+ self .assertRaises (TypeError , OrderedDict ().update , (), ())
1394+ self .assertRaises (TypeError , OrderedDict .update )
1395+
13571396 def test_abc (self ):
13581397 self .assertIsInstance (OrderedDict (), MutableMapping )
13591398 self .assertTrue (issubclass (OrderedDict , MutableMapping ))
@@ -1600,6 +1639,24 @@ def test_popitem(self):
16001639 d = self ._empty_mapping ()
16011640 self .assertRaises (KeyError , d .popitem )
16021641
1642+ class TestUserDict (unittest .TestCase ):
1643+
1644+ def test_init (self ):
1645+ self .assertEqual (list (UserDict (self = 42 ).items ()), [('self' , 42 )])
1646+ self .assertEqual (list (UserDict (dict = 42 ).items ()), [('dict' , 42 )])
1647+ self .assertEqual (list (UserDict (dict = None ).items ()), [('dict' , None )])
1648+ self .assertRaises (TypeError , UserDict , 42 )
1649+ self .assertRaises (TypeError , UserDict , (), ())
1650+ self .assertRaises (TypeError , UserDict .__init__ )
1651+
1652+ def test_update (self ):
1653+ d = UserDict ()
1654+ d .update (self = 42 )
1655+ self .assertEqual (list (d .items ()), [('self' , 42 )])
1656+ self .assertRaises (TypeError , UserDict ().update , 42 )
1657+ self .assertRaises (TypeError , UserDict ().update , {}, {})
1658+ self .assertRaises (TypeError , UserDict .update )
1659+
16031660
16041661################################################################################
16051662### Run tests
@@ -1611,7 +1668,8 @@ def test_main(verbose=None):
16111668 NamedTupleDocs = doctest .DocTestSuite (module = collections )
16121669 test_classes = [TestNamedTuple , NamedTupleDocs , TestOneTrickPonyABCs ,
16131670 TestCollectionABCs , TestCounter , TestChainMap ,
1614- TestOrderedDict , GeneralMappingTests , SubclassMappingTests ]
1671+ TestOrderedDict , GeneralMappingTests , SubclassMappingTests ,
1672+ TestUserDict ,]
16151673 support .run_unittest (* test_classes )
16161674 support .run_doctest (collections , verbose )
16171675
0 commit comments