mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 21:51:50 +00:00 
			
		
		
		
	
		
			
	
	
		
			104 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			104 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | import sys | ||
|  | import unittest | ||
|  | from test.support import import_helper | ||
|  | 
 | ||
|  | _testlimitedcapi = import_helper.import_module('_testlimitedcapi') | ||
|  | 
 | ||
|  | 
 | ||
|  | class Tests(unittest.TestCase): | ||
|  |     def test_eval_get_func_name(self): | ||
|  |         eval_get_func_name = _testlimitedcapi.eval_get_func_name | ||
|  | 
 | ||
|  |         def function_example(): ... | ||
|  | 
 | ||
|  |         class A: | ||
|  |             def method_example(self): ... | ||
|  | 
 | ||
|  |         self.assertEqual(eval_get_func_name(function_example), | ||
|  |                          "function_example") | ||
|  |         self.assertEqual(eval_get_func_name(A.method_example), | ||
|  |                          "method_example") | ||
|  |         self.assertEqual(eval_get_func_name(A().method_example), | ||
|  |                          "method_example") | ||
|  |         self.assertEqual(eval_get_func_name(sum), "sum")  # c function | ||
|  |         self.assertEqual(eval_get_func_name(A), "type") | ||
|  | 
 | ||
|  |     def test_eval_get_func_desc(self): | ||
|  |         eval_get_func_desc = _testlimitedcapi.eval_get_func_desc | ||
|  | 
 | ||
|  |         def function_example(): ... | ||
|  | 
 | ||
|  |         class A: | ||
|  |             def method_example(self): ... | ||
|  | 
 | ||
|  |         self.assertEqual(eval_get_func_desc(function_example), | ||
|  |                          "()") | ||
|  |         self.assertEqual(eval_get_func_desc(A.method_example), | ||
|  |                          "()") | ||
|  |         self.assertEqual(eval_get_func_desc(A().method_example), | ||
|  |                          "()") | ||
|  |         self.assertEqual(eval_get_func_desc(sum), "()")  # c function | ||
|  |         self.assertEqual(eval_get_func_desc(A), " object") | ||
|  | 
 | ||
|  |     def test_eval_getlocals(self): | ||
|  |         # Test PyEval_GetLocals() | ||
|  |         x = 1 | ||
|  |         self.assertEqual(_testlimitedcapi.eval_getlocals(), | ||
|  |             {'self': self, | ||
|  |              'x': 1}) | ||
|  | 
 | ||
|  |         y = 2 | ||
|  |         self.assertEqual(_testlimitedcapi.eval_getlocals(), | ||
|  |             {'self': self, | ||
|  |              'x': 1, | ||
|  |              'y': 2}) | ||
|  | 
 | ||
|  |     def test_eval_getglobals(self): | ||
|  |         # Test PyEval_GetGlobals() | ||
|  |         self.assertEqual(_testlimitedcapi.eval_getglobals(), | ||
|  |                          globals()) | ||
|  | 
 | ||
|  |     def test_eval_getbuiltins(self): | ||
|  |         # Test PyEval_GetBuiltins() | ||
|  |         self.assertEqual(_testlimitedcapi.eval_getbuiltins(), | ||
|  |                          globals()['__builtins__']) | ||
|  | 
 | ||
|  |     def test_eval_getframe(self): | ||
|  |         # Test PyEval_GetFrame() | ||
|  |         self.assertEqual(_testlimitedcapi.eval_getframe(), | ||
|  |                          sys._getframe()) | ||
|  | 
 | ||
|  |     def test_eval_getframe_builtins(self): | ||
|  |         # Test PyEval_GetFrameBuiltins() | ||
|  |         self.assertEqual(_testlimitedcapi.eval_getframe_builtins(), | ||
|  |                          sys._getframe().f_builtins) | ||
|  | 
 | ||
|  |     def test_eval_getframe_globals(self): | ||
|  |         # Test PyEval_GetFrameGlobals() | ||
|  |         self.assertEqual(_testlimitedcapi.eval_getframe_globals(), | ||
|  |                          sys._getframe().f_globals) | ||
|  | 
 | ||
|  |     def test_eval_getframe_locals(self): | ||
|  |         # Test PyEval_GetFrameLocals() | ||
|  |         self.assertEqual(_testlimitedcapi.eval_getframe_locals(), | ||
|  |                          sys._getframe().f_locals) | ||
|  | 
 | ||
|  |     def test_eval_get_recursion_limit(self): | ||
|  |         # Test Py_GetRecursionLimit() | ||
|  |         self.assertEqual(_testlimitedcapi.eval_get_recursion_limit(), | ||
|  |                          sys.getrecursionlimit()) | ||
|  | 
 | ||
|  |     def test_eval_set_recursion_limit(self): | ||
|  |         # Test Py_SetRecursionLimit() | ||
|  |         old_limit = sys.getrecursionlimit() | ||
|  |         try: | ||
|  |             limit = old_limit + 123 | ||
|  |             _testlimitedcapi.eval_set_recursion_limit(limit) | ||
|  |             self.assertEqual(sys.getrecursionlimit(), limit) | ||
|  |         finally: | ||
|  |             sys.setrecursionlimit(old_limit) | ||
|  | 
 | ||
|  | 
 | ||
|  | if __name__ == "__main__": | ||
|  |     unittest.main() |