diff options
| author | Serhiy Storchaka <storchaka@gmail.com> | 2015-12-22 08:16:18 +0200 |
|---|---|---|
| committer | Serhiy Storchaka <storchaka@gmail.com> | 2015-12-22 08:16:18 +0200 |
| commit | 0ce7a3a34cec0e625f63d46390a8c1d2e167494f (patch) | |
| tree | b4de6a4570fc14109dcc2b2c4f5adc2b3be8d2af /Lib | |
| parent | 5af856404afc1b1e6b9dd4ac86a5771a407cbc6a (diff) | |
| download | cpython-git-0ce7a3a34cec0e625f63d46390a8c1d2e167494f.tar.gz | |
Issue #25914: Fixed and simplified OrderedDict.__sizeof__.
Diffstat (limited to 'Lib')
| -rw-r--r-- | Lib/test/test_ordered_dict.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/Lib/test/test_ordered_dict.py b/Lib/test/test_ordered_dict.py index 4b09227969..9d6c6ffa22 100644 --- a/Lib/test/test_ordered_dict.py +++ b/Lib/test/test_ordered_dict.py @@ -2,6 +2,7 @@ import contextlib import copy import pickle from random import randrange, shuffle +import struct import sys import unittest from collections.abc import MutableMapping @@ -596,6 +597,37 @@ class CPythonOrderedDictTests(OrderedDictTests, unittest.TestCase): module = c_coll OrderedDict = c_coll.OrderedDict + check_sizeof = support.check_sizeof + + @support.cpython_only + def test_sizeof_exact(self): + OrderedDict = self.OrderedDict + calcsize = struct.calcsize + size = support.calcobjsize + check = self.check_sizeof + + basicsize = size('n2P' + '3PnPn2P') + calcsize('2nPn') + entrysize = calcsize('n2P') + calcsize('P') + nodesize = calcsize('Pn2P') + + od = OrderedDict() + check(od, basicsize + 8*entrysize) + od.x = 1 + check(od, basicsize + 8*entrysize) + od.update([(i, i) for i in range(3)]) + check(od, basicsize + 8*entrysize + 3*nodesize) + od.update([(i, i) for i in range(3, 10)]) + check(od, basicsize + 16*entrysize + 10*nodesize) + + check(od.keys(), size('P')) + check(od.items(), size('P')) + check(od.values(), size('P')) + + itersize = size('iP2n2P') + check(iter(od), itersize) + check(iter(od.keys()), itersize) + check(iter(od.items()), itersize) + check(iter(od.values()), itersize) def test_key_change_during_iteration(self): OrderedDict = self.OrderedDict |
