mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 21:51:50 +00:00 
			
		
		
		
	
		
			
	
	
		
			47 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | 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.assertEquals(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() |