mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
	
	
		
			40 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | import unittest | ||
|  | import sys | ||
|  | 
 | ||
|  | from test.support import import_helper | ||
|  | 
 | ||
|  | # Skip this test if the _testcapi module isn't available. | ||
|  | _testcapi = import_helper.import_module('_testcapi') | ||
|  | 
 | ||
|  | 
 | ||
|  | class LongTests(unittest.TestCase): | ||
|  | 
 | ||
|  |     def test_compact(self): | ||
|  |         for n in { | ||
|  |             # Edge cases | ||
|  |             *(2**n for n in range(66)), | ||
|  |             *(-2**n for n in range(66)), | ||
|  |             *(2**n - 1 for n in range(66)), | ||
|  |             *(-2**n + 1 for n in range(66)), | ||
|  |             # Essentially random | ||
|  |             *(37**n for n in range(14)), | ||
|  |             *(-37**n for n in range(14)), | ||
|  |         }: | ||
|  |             with self.subTest(n=n): | ||
|  |                 is_compact, value = _testcapi.call_long_compact_api(n) | ||
|  |                 if is_compact: | ||
|  |                     self.assertEqual(n, value) | ||
|  | 
 | ||
|  |     def test_compact_known(self): | ||
|  |         # Sanity-check some implementation details (we don't guarantee | ||
|  |         # that these are/aren't compact) | ||
|  |         self.assertEqual(_testcapi.call_long_compact_api(-1), (True, -1)) | ||
|  |         self.assertEqual(_testcapi.call_long_compact_api(0), (True, 0)) | ||
|  |         self.assertEqual(_testcapi.call_long_compact_api(256), (True, 256)) | ||
|  |         self.assertEqual(_testcapi.call_long_compact_api(sys.maxsize), | ||
|  |                          (False, -1)) | ||
|  | 
 | ||
|  | 
 | ||
|  | if __name__ == "__main__": | ||
|  |     unittest.main() |