A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/python/cpython/commit/e7d8be80ba634fa15ece6f503c33592e0d333361 below:

prevent int overflow when allocating me… · python/cpython@e7d8be8 · GitHub

1 1

from test import test_support

2 -

from test.test_support import bigmemtest, _1G, _2G

2 +

from test.test_support import bigmemtest, _1G, _2G, _4G, precisionbigmemtest

3 3 4 4

import unittest

5 5

import operator

@@ -54,6 +54,22 @@ def test_center(self, size):

54 54

self.assertEquals(s[lpadsize:-rpadsize], SUBSTR)

55 55

self.assertEquals(s.strip(), SUBSTR.strip())

56 56 57 +

@precisionbigmemtest(size=_2G - 1, memuse=1)

58 +

def test_center_unicode(self, size):

59 +

SUBSTR = u' abc def ghi'

60 +

try:

61 +

s = SUBSTR.center(size)

62 +

except OverflowError:

63 +

pass # acceptable on 32-bit

64 +

else:

65 +

self.assertEquals(len(s), size)

66 +

lpadsize = rpadsize = (len(s) - len(SUBSTR)) // 2

67 +

if len(s) % 2:

68 +

lpadsize += 1

69 +

self.assertEquals(s[lpadsize:-rpadsize], SUBSTR)

70 +

self.assertEquals(s.strip(), SUBSTR.strip())

71 +

del s

72 + 57 73

@bigmemtest(minsize=_2G, memuse=2)

58 74

def test_count(self, size):

59 75

SUBSTR = ' abc def ghi'

@@ -70,10 +86,51 @@ def test_decode(self, size):

70 86

s = '.' * size

71 87

self.assertEquals(len(s.decode('utf-8')), size)

72 88 89 +

def basic_encode_test(self, size, enc, c=u'.', expectedsize=None):

90 +

if expectedsize is None:

91 +

expectedsize = size

92 + 93 +

s = c * size

94 +

self.assertEquals(len(s.encode(enc)), expectedsize)

95 + 73 96

@bigmemtest(minsize=_2G + 2, memuse=3)

74 97

def test_encode(self, size):

75 -

s = u'.' * size

76 -

self.assertEquals(len(s.encode('utf-8')), size)

98 +

return self.basic_encode_test(size, 'utf-8')

99 + 100 +

@precisionbigmemtest(size=_4G / 6 + 2, memuse=2)

101 +

def test_encode_raw_unicode_escape(self, size):

102 +

try:

103 +

return self.basic_encode_test(size, 'raw_unicode_escape')

104 +

except MemoryError:

105 +

pass # acceptable on 32-bit

106 + 107 +

@precisionbigmemtest(size=_4G / 5 + 70, memuse=3)

108 +

def test_encode_utf7(self, size):

109 +

try:

110 +

return self.basic_encode_test(size, 'utf7')

111 +

except MemoryError:

112 +

pass # acceptable on 32-bit

113 + 114 +

@precisionbigmemtest(size=_4G / 4 + 5, memuse=6)

115 +

def test_encode_utf32(self, size):

116 +

try:

117 +

return self.basic_encode_test(size, 'utf32', expectedsize=4*size+4)

118 +

except MemoryError:

119 +

pass # acceptable on 32-bit

120 + 121 +

@precisionbigmemtest(size=_2G-1, memuse=2)

122 +

def test_decodeascii(self, size):

123 +

return self.basic_encode_test(size, 'ascii', c='A')

124 + 125 +

@precisionbigmemtest(size=_4G / 5, memuse=6+2)

126 +

def test_unicode_repr_oflw(self, size):

127 +

try:

128 +

s = u"\uAAAA"*size

129 +

r = repr(s)

130 +

except MemoryError:

131 +

pass # acceptable on 32-bit

132 +

else:

133 +

self.failUnless(s == eval(r))

77 134 78 135

@bigmemtest(minsize=_2G, memuse=2)

79 136

def test_endswith(self, size):

@@ -459,6 +516,11 @@ def test_repr_large(self, size):

459 516

self.assertEquals(s.count('\\'), size)

460 517

self.assertEquals(s.count('0'), size * 2)

461 518 519 +

@bigmemtest(minsize=2**32 / 5, memuse=6+2)

520 +

def test_unicode_repr(self, size):

521 +

s = u"\uAAAA" * size

522 +

self.failUnless(len(repr(s)) > size)

523 + 462 524

# This test is meaningful even with size < 2G, as long as the

463 525

# doubled string is > 2G (but it tests more if both are > 2G :)

464 526

@bigmemtest(minsize=_1G + 2, memuse=3)

@@ -642,6 +704,35 @@ def test_repeat_small(self, size):

642 704

def test_repeat_large(self, size):

643 705

return self.basic_test_repeat(size)

644 706 707 +

@bigmemtest(minsize=_1G - 1, memuse=12)

708 +

def test_repeat_large_2(self, size):

709 +

return self.basic_test_repeat(size)

710 + 711 +

@precisionbigmemtest(size=_1G - 1, memuse=9)

712 +

def test_from_2G_generator(self, size):

713 +

try:

714 +

t = tuple(xrange(size))

715 +

except MemoryError:

716 +

pass # acceptable on 32-bit

717 +

else:

718 +

count = 0

719 +

for item in t:

720 +

self.assertEquals(item, count)

721 +

count += 1

722 +

self.assertEquals(count, size)

723 + 724 +

@precisionbigmemtest(size=_1G - 25, memuse=9)

725 +

def test_from_almost_2G_generator(self, size):

726 +

try:

727 +

t = tuple(xrange(size))

728 +

count = 0

729 +

for item in t:

730 +

self.assertEquals(item, count)

731 +

count += 1

732 +

self.assertEquals(count, size)

733 +

except MemoryError:

734 +

pass # acceptable, expected on 32-bit

735 + 645 736

# Like test_concat, split in two.

646 737

def basic_test_repr(self, size):

647 738

t = (0,) * size

@@ -957,8 +1048,23 @@ def test_sort(self, size):

957 1048

self.assertEquals(l[:10], [1] * 10)

958 1049

self.assertEquals(l[-10:], [5] * 10)

959 1050 1051 +

class BufferTest(unittest.TestCase):

1052 + 1053 +

@precisionbigmemtest(size=_1G, memuse=4)

1054 +

def test_repeat(self, size):

1055 +

try:

1056 +

b = buffer("AAAA")*size

1057 +

except MemoryError:

1058 +

pass # acceptable on 32-bit

1059 +

else:

1060 +

count = 0

1061 +

for c in b:

1062 +

self.assertEquals(c, 'A')

1063 +

count += 1

1064 +

self.assertEquals(count, size*4)

1065 + 960 1066

def test_main():

961 -

test_support.run_unittest(StrTest, TupleTest, ListTest)

1067 +

test_support.run_unittest(StrTest, TupleTest, ListTest, BufferTest)

962 1068 963 1069

if __name__ == '__main__':

964 1070

if len(sys.argv) > 1:


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4