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