from test import test_support from test.test_support import bigaddrspacetest, MAX_Py_ssize_t import unittest import operator import sys class StrTest(unittest.TestCase): @bigaddrspacetest def test_concat(self): s1 = 'x' * MAX_Py_ssize_t self.assertRaises(OverflowError, operator.add, s1, '?') @bigaddrspacetest def test_optimized_concat(self): x = 'x' * MAX_Py_ssize_t try: x = x + '?' # this statement uses a fast path in ceval.c except OverflowError: pass else: self.fail("should have raised OverflowError") try: x += '?' # this statement uses a fast path in ceval.c except OverflowError: pass else: self.fail("should have raised OverflowError") self.assertEqual(len(x), MAX_Py_ssize_t) ### the following test is pending a patch # (http://mail.python.org/pipermail/python-dev/2006-July/067774.html) #@bigaddrspacetest #def test_repeat(self): # self.assertRaises(OverflowError, operator.mul, 'x', MAX_Py_ssize_t + 1) def test_main(): test_support.run_unittest(StrTest) if __name__ == '__main__': if len(sys.argv) > 1: test_support.set_memlimit(sys.argv[1]) test_main()