blob: 3aedc4cf35666a7cb7226f9dc66800afce0bdf75 [file] [log] [blame]
Benjamin Petersonee8712c2008-05-20 21:35:26 +00001from test import support
2from test.support import bigaddrspacetest, MAX_Py_ssize_t
Thomas Wouters0e3f5912006-08-11 14:57:12 +00003
4import unittest
5import operator
6import sys
7
8
9class StrTest(unittest.TestCase):
10
11 @bigaddrspacetest
12 def test_concat(self):
13 s1 = 'x' * MAX_Py_ssize_t
14 self.assertRaises(OverflowError, operator.add, s1, '?')
15
16 @bigaddrspacetest
17 def test_optimized_concat(self):
18 x = 'x' * MAX_Py_ssize_t
19 try:
20 x = x + '?' # this statement uses a fast path in ceval.c
21 except OverflowError:
22 pass
23 else:
24 self.fail("should have raised OverflowError")
25 try:
26 x += '?' # this statement uses a fast path in ceval.c
27 except OverflowError:
28 pass
29 else:
30 self.fail("should have raised OverflowError")
31 self.assertEquals(len(x), MAX_Py_ssize_t)
32
33 ### the following test is pending a patch
34 # (http://mail.python.org/pipermail/python-dev/2006-July/067774.html)
35 #@bigaddrspacetest
36 #def test_repeat(self):
37 # self.assertRaises(OverflowError, operator.mul, 'x', MAX_Py_ssize_t + 1)
38
39
40def test_main():
Benjamin Petersonee8712c2008-05-20 21:35:26 +000041 support.run_unittest(StrTest)
Thomas Wouters0e3f5912006-08-11 14:57:12 +000042
43if __name__ == '__main__':
44 if len(sys.argv) > 1:
Benjamin Petersonee8712c2008-05-20 21:35:26 +000045 support.set_memlimit(sys.argv[1])
Thomas Wouters0e3f5912006-08-11 14:57:12 +000046 test_main()