|
|
|
@ -1137,6 +1137,28 @@ class TestCounter(unittest.TestCase): |
|
|
|
self.assertEqual(c.setdefault('e', 5), 5) |
|
|
|
self.assertEqual(c['e'], 5) |
|
|
|
|
|
|
|
def test_init(self): |
|
|
|
self.assertEqual(list(Counter(self=42).items()), [('self', 42)]) |
|
|
|
self.assertEqual(list(Counter(iterable=42).items()), [('iterable', 42)]) |
|
|
|
self.assertEqual(list(Counter(iterable=None).items()), [('iterable', None)]) |
|
|
|
self.assertRaises(TypeError, Counter, 42) |
|
|
|
self.assertRaises(TypeError, Counter, (), ()) |
|
|
|
self.assertRaises(TypeError, Counter.__init__) |
|
|
|
|
|
|
|
def test_update(self): |
|
|
|
c = Counter() |
|
|
|
c.update(self=42) |
|
|
|
self.assertEqual(list(c.items()), [('self', 42)]) |
|
|
|
c = Counter() |
|
|
|
c.update(iterable=42) |
|
|
|
self.assertEqual(list(c.items()), [('iterable', 42)]) |
|
|
|
c = Counter() |
|
|
|
c.update(iterable=None) |
|
|
|
self.assertEqual(list(c.items()), [('iterable', None)]) |
|
|
|
self.assertRaises(TypeError, Counter().update, 42) |
|
|
|
self.assertRaises(TypeError, Counter().update, {}, {}) |
|
|
|
self.assertRaises(TypeError, Counter.update) |
|
|
|
|
|
|
|
def test_copying(self): |
|
|
|
# Check that counters are copyable, deepcopyable, picklable, and |
|
|
|
#have a repr/eval round-trip |
|
|
|
@ -1258,6 +1280,16 @@ class TestCounter(unittest.TestCase): |
|
|
|
c.subtract('aaaabbcce') |
|
|
|
self.assertEqual(c, Counter(a=-1, b=0, c=-1, d=1, e=-1)) |
|
|
|
|
|
|
|
c = Counter() |
|
|
|
c.subtract(self=42) |
|
|
|
self.assertEqual(list(c.items()), [('self', -42)]) |
|
|
|
c = Counter() |
|
|
|
c.subtract(iterable=42) |
|
|
|
self.assertEqual(list(c.items()), [('iterable', -42)]) |
|
|
|
self.assertRaises(TypeError, Counter().subtract, 42) |
|
|
|
self.assertRaises(TypeError, Counter().subtract, {}, {}) |
|
|
|
self.assertRaises(TypeError, Counter.subtract) |
|
|
|
|
|
|
|
def test_unary(self): |
|
|
|
c = Counter(a=-5, b=0, c=5, d=10, e=15,g=40) |
|
|
|
self.assertEqual(dict(+c), dict(c=5, d=10, e=15, g=40)) |
|
|
|
@ -1308,8 +1340,11 @@ class TestOrderedDict(unittest.TestCase): |
|
|
|
c=3, e=5).items()), pairs) # mixed input |
|
|
|
|
|
|
|
# make sure no positional args conflict with possible kwdargs |
|
|
|
self.assertEqual(inspect.getargspec(OrderedDict.__dict__['__init__']).args, |
|
|
|
['self']) |
|
|
|
self.assertEqual(list(OrderedDict(self=42).items()), [('self', 42)]) |
|
|
|
self.assertEqual(list(OrderedDict(other=42).items()), [('other', 42)]) |
|
|
|
self.assertRaises(TypeError, OrderedDict, 42) |
|
|
|
self.assertRaises(TypeError, OrderedDict, (), ()) |
|
|
|
self.assertRaises(TypeError, OrderedDict.__init__) |
|
|
|
|
|
|
|
# Make sure that direct calls to __init__ do not clear previous contents |
|
|
|
d = OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 44), ('e', 55)]) |
|
|
|
@ -1354,6 +1389,10 @@ class TestOrderedDict(unittest.TestCase): |
|
|
|
self.assertEqual(list(d.items()), |
|
|
|
[('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5), ('f', 6), ('g', 7)]) |
|
|
|
|
|
|
|
self.assertRaises(TypeError, OrderedDict().update, 42) |
|
|
|
self.assertRaises(TypeError, OrderedDict().update, (), ()) |
|
|
|
self.assertRaises(TypeError, OrderedDict.update) |
|
|
|
|
|
|
|
def test_abc(self): |
|
|
|
self.assertIsInstance(OrderedDict(), MutableMapping) |
|
|
|
self.assertTrue(issubclass(OrderedDict, MutableMapping)) |
|
|
|
@ -1600,6 +1639,24 @@ class SubclassMappingTests(mapping_tests.BasicTestMappingProtocol): |
|
|
|
d = self._empty_mapping() |
|
|
|
self.assertRaises(KeyError, d.popitem) |
|
|
|
|
|
|
|
class TestUserDict(unittest.TestCase): |
|
|
|
|
|
|
|
def test_init(self): |
|
|
|
self.assertEqual(list(UserDict(self=42).items()), [('self', 42)]) |
|
|
|
self.assertEqual(list(UserDict(dict=42).items()), [('dict', 42)]) |
|
|
|
self.assertEqual(list(UserDict(dict=None).items()), [('dict', None)]) |
|
|
|
self.assertRaises(TypeError, UserDict, 42) |
|
|
|
self.assertRaises(TypeError, UserDict, (), ()) |
|
|
|
self.assertRaises(TypeError, UserDict.__init__) |
|
|
|
|
|
|
|
def test_update(self): |
|
|
|
d = UserDict() |
|
|
|
d.update(self=42) |
|
|
|
self.assertEqual(list(d.items()), [('self', 42)]) |
|
|
|
self.assertRaises(TypeError, UserDict().update, 42) |
|
|
|
self.assertRaises(TypeError, UserDict().update, {}, {}) |
|
|
|
self.assertRaises(TypeError, UserDict.update) |
|
|
|
|
|
|
|
|
|
|
|
################################################################################ |
|
|
|
### Run tests |
|
|
|
@ -1611,7 +1668,8 @@ def test_main(verbose=None): |
|
|
|
NamedTupleDocs = doctest.DocTestSuite(module=collections) |
|
|
|
test_classes = [TestNamedTuple, NamedTupleDocs, TestOneTrickPonyABCs, |
|
|
|
TestCollectionABCs, TestCounter, TestChainMap, |
|
|
|
TestOrderedDict, GeneralMappingTests, SubclassMappingTests] |
|
|
|
TestOrderedDict, GeneralMappingTests, SubclassMappingTests, |
|
|
|
TestUserDict,] |
|
|
|
support.run_unittest(*test_classes) |
|
|
|
support.run_doctest(collections, verbose) |
|
|
|
|
|
|
|
|