| 
									
										
										
										
											2023-05-03 00:05:30 +09:00
										 |  |  | import unittest | 
					
						
							|  |  |  | from test.support import import_helper | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | _testcapi = import_helper.import_module('_testcapi') | 
					
						
							| 
									
										
										
										
											2024-12-11 17:37:38 +00:00
										 |  |  | _testinternalcapi = import_helper.import_module('_testinternalcapi') | 
					
						
							| 
									
										
										
										
											2023-05-03 00:05:30 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-01-27 08:36:33 -05:00
										 |  |  | class TestUnstableCAPI(unittest.TestCase): | 
					
						
							|  |  |  |     def test_immortal(self): | 
					
						
							|  |  |  |         # Not extensive | 
					
						
							|  |  |  |         known_immortals = (True, False, None, 0, ()) | 
					
						
							|  |  |  |         for immortal in known_immortals: | 
					
						
							|  |  |  |             with self.subTest(immortal=immortal): | 
					
						
							|  |  |  |                 self.assertTrue(_testcapi.is_immortal(immortal)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Some arbitrary mutable objects | 
					
						
							|  |  |  |         non_immortals = (object(), self, [object()]) | 
					
						
							|  |  |  |         for non_immortal in non_immortals: | 
					
						
							|  |  |  |             with self.subTest(non_immortal=non_immortal): | 
					
						
							|  |  |  |                 self.assertFalse(_testcapi.is_immortal(non_immortal)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # CRASHES _testcapi.is_immortal(NULL) | 
					
						
							| 
									
										
										
										
											2023-05-03 00:05:30 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-11 17:37:38 +00:00
										 |  |  | class TestInternalCAPI(unittest.TestCase): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_immortal_builtins(self): | 
					
						
							|  |  |  |         for obj in range(-5, 256): | 
					
						
							|  |  |  |             self.assertTrue(_testinternalcapi.is_static_immortal(obj)) | 
					
						
							|  |  |  |         self.assertTrue(_testinternalcapi.is_static_immortal(None)) | 
					
						
							|  |  |  |         self.assertTrue(_testinternalcapi.is_static_immortal(False)) | 
					
						
							|  |  |  |         self.assertTrue(_testinternalcapi.is_static_immortal(True)) | 
					
						
							|  |  |  |         self.assertTrue(_testinternalcapi.is_static_immortal(...)) | 
					
						
							|  |  |  |         self.assertTrue(_testinternalcapi.is_static_immortal(())) | 
					
						
							|  |  |  |         for obj in range(300, 400): | 
					
						
							|  |  |  |             self.assertFalse(_testinternalcapi.is_static_immortal(obj)) | 
					
						
							|  |  |  |         for obj in ([], {}, set()): | 
					
						
							|  |  |  |             self.assertFalse(_testinternalcapi.is_static_immortal(obj)) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-03 00:05:30 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     unittest.main() |