mirror of
https://github.com/python/cpython.git
synced 2025-11-01 10:45:30 +00:00
Merged revisions 64002-64003,64012,64036-64037,64047,64050-64052,64054-64055,64066,64071 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r64002 | travis.oliphant | 2008-06-07 00:33:21 +0200 (Sat, 07 Jun 2008) | 1 line Add long double check support to configure test. ........ r64003 | travis.oliphant | 2008-06-07 00:39:47 +0200 (Sat, 07 Jun 2008) | 1 line Remove locking part of new buffer protocol. ........ r64012 | facundo.batista | 2008-06-07 15:36:36 +0200 (Sat, 07 Jun 2008) | 4 lines Finished bug #2451. Fixed the retrying part to make it more robust. ........ r64036 | georg.brandl | 2008-06-08 10:54:40 +0200 (Sun, 08 Jun 2008) | 2 lines #3028: tokenize passes the physical line. ........ r64037 | georg.brandl | 2008-06-08 10:59:38 +0200 (Sun, 08 Jun 2008) | 2 lines Argh, I read it wrong. Reverted 64036 and added a clarifying remark. ........ r64047 | raymond.hettinger | 2008-06-09 03:28:30 +0200 (Mon, 09 Jun 2008) | 1 line Issue3065: Fixed pickling of named tuples. Added tests. ........ r64050 | raymond.hettinger | 2008-06-09 08:54:45 +0200 (Mon, 09 Jun 2008) | 1 line Issue #2138: Add math.factorial(). ........ r64051 | raymond.hettinger | 2008-06-09 10:33:37 +0200 (Mon, 09 Jun 2008) | 1 line Let set.union() and set.update() accept multiple inputs. ........ r64052 | raymond.hettinger | 2008-06-09 11:29:17 +0200 (Mon, 09 Jun 2008) | 1 line Address double-rounding scenarios by setting all variables to long doubles. ........ r64054 | raymond.hettinger | 2008-06-09 13:24:47 +0200 (Mon, 09 Jun 2008) | 1 line Unhappy buildbots. Revert 64052. Long doubles have unexpected effects on some builds. ........ r64055 | raymond.hettinger | 2008-06-09 15:07:27 +0200 (Mon, 09 Jun 2008) | 1 line Let set.intersection() and set.intersection_update() take multiple input arguments. ........ r64066 | robert.schuppenies | 2008-06-10 12:10:31 +0200 (Tue, 10 Jun 2008) | 2 lines Issue 3048: Fixed sys.getsizeof for unicode objects. ........ r64071 | thomas.heller | 2008-06-10 16:07:12 +0200 (Tue, 10 Jun 2008) | 3 lines NEWS entry for: Add an optional 'offset' parameter to byref, defaulting to zero. ........
This commit is contained in:
parent
e932c5c813
commit
c28e1fa71f
13 changed files with 277 additions and 57 deletions
|
|
@ -386,11 +386,14 @@ class SizeofTest(unittest.TestCase):
|
|||
self.file.close()
|
||||
test.support.unlink(test.support.TESTFN)
|
||||
|
||||
def check_sizeof(self, o, size):
|
||||
def check_sizeof(self, o, size, size2=None):
|
||||
"""Check size of o. Possible are size and optionally size2)."""
|
||||
result = sys.getsizeof(o)
|
||||
msg = 'wrong size for %s: got %d, expected %d' \
|
||||
% (type(o), result, size)
|
||||
self.assertEqual(result, size, msg)
|
||||
msg = 'wrong size for %s: got %d, expected ' % (type(o), result)
|
||||
if (size2 != None) and (result != size):
|
||||
self.assertEqual(result, size2, msg + str(size2))
|
||||
else:
|
||||
self.assertEqual(result, size, msg + str(size))
|
||||
|
||||
def align(self, value):
|
||||
mod = value % self.p
|
||||
|
|
@ -486,6 +489,24 @@ class SizeofTest(unittest.TestCase):
|
|||
# list
|
||||
self.check_sizeof([], h + l + p + l)
|
||||
self.check_sizeof([1, 2, 3], h + l + p + l + 3*l)
|
||||
# unicode
|
||||
import math
|
||||
usize = math.log(sys.maxunicode + 1, 2) / 8
|
||||
samples = ['', '1'*100]
|
||||
# we need to test for both sizes, because we don't know if the string
|
||||
# has been cached
|
||||
for s in samples:
|
||||
basicsize = h + l + p + l + l + p + usize * (len(s) + 1)
|
||||
defenc = bytes(s, 'ascii')
|
||||
self.check_sizeof(s, basicsize,
|
||||
size2=basicsize + sys.getsizeof(defenc))
|
||||
# trigger caching encoded version as bytes object
|
||||
try:
|
||||
getattr(sys, s)
|
||||
except AttributeError:
|
||||
pass
|
||||
finally:
|
||||
self.check_sizeof(s, basicsize + sys.getsizeof(defenc))
|
||||
|
||||
h += l
|
||||
# long
|
||||
|
|
@ -495,9 +516,6 @@ class SizeofTest(unittest.TestCase):
|
|||
self.check_sizeof(32768, h + self.align(2) + 2)
|
||||
self.check_sizeof(32768*32768-1, h + self.align(2) + 2)
|
||||
self.check_sizeof(32768*32768, h + self.align(2) + 4)
|
||||
# XXX add Unicode support
|
||||
# self.check_sizeof('', h + l + self.align(i + 1))
|
||||
# self.check_sizeof('abc', h + l + self.align(i + 1) + 3)
|
||||
|
||||
|
||||
def test_main():
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue