@@ -1084,6 +1084,28 @@ def test_basics(self):
10841084 self .assertEqual (c .setdefault ('e' , 5 ), 5 )
10851085 self .assertEqual (c ['e' ], 5 )
10861086
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+
10871109 def test_copying (self ):
10881110 # Check that counters are copyable, deepcopyable, picklable, and
10891111 #have a repr/eval round-trip
@@ -1205,6 +1227,16 @@ def test_subtract(self):
12051227 c .subtract ('aaaabbcce' )
12061228 self .assertEqual (c , Counter (a = - 1 , b = 0 , c = - 1 , d = 1 , e = - 1 ))
12071229
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+
12081240 def test_unary (self ):
12091241 c = Counter (a = - 5 , b = 0 , c = 5 , d = 10 , e = 15 ,g = 40 )
12101242 self .assertEqual (dict (+ c ), dict (c = 5 , d = 10 , e = 15 , g = 40 ))
@@ -1255,8 +1287,11 @@ def test_init(self):
12551287 c = 3 , e = 5 ).items ()), pairs ) # mixed input
12561288
12571289 # 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__ )
12601295
12611296 # Make sure that direct calls to __init__ do not clear previous contents
12621297 d = OrderedDict ([('a' , 1 ), ('b' , 2 ), ('c' , 3 ), ('d' , 44 ), ('e' , 55 )])
@@ -1301,6 +1336,10 @@ def test_update(self):
13011336 self .assertEqual (list (d .items ()),
13021337 [('a' , 1 ), ('b' , 2 ), ('c' , 3 ), ('d' , 4 ), ('e' , 5 ), ('f' , 6 ), ('g' , 7 )])
13031338
1339+ self .assertRaises (TypeError , OrderedDict ().update , 42 )
1340+ self .assertRaises (TypeError , OrderedDict ().update , (), ())
1341+ self .assertRaises (TypeError , OrderedDict .update )
1342+
13041343 def test_abc (self ):
13051344 self .assertIsInstance (OrderedDict (), MutableMapping )
13061345 self .assertTrue (issubclass (OrderedDict , MutableMapping ))
@@ -1532,6 +1571,24 @@ def test_popitem(self):
15321571 d = self ._empty_mapping ()
15331572 self .assertRaises (KeyError , d .popitem )
15341573
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+
15351592
15361593################################################################################
15371594### Run tests
@@ -1543,7 +1600,8 @@ def test_main(verbose=None):
15431600 NamedTupleDocs = doctest .DocTestSuite (module = collections )
15441601 test_classes = [TestNamedTuple , NamedTupleDocs , TestOneTrickPonyABCs ,
15451602 TestCollectionABCs , TestCounter , TestChainMap ,
1546- TestOrderedDict , GeneralMappingTests , SubclassMappingTests ]
1603+ TestOrderedDict , GeneralMappingTests , SubclassMappingTests ,
1604+ TestUserDict ,]
15471605 support .run_unittest (* test_classes )
15481606 support .run_doctest (collections , verbose )
15491607
0 commit comments