mirror of https://github.com/python/cpython.git
43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
import unittest
|
|
from test.support import import_helper
|
|
|
|
_testcapi = import_helper.import_module('_testcapi')
|
|
_testinternalcapi = import_helper.import_module('_testinternalcapi')
|
|
|
|
|
|
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)
|
|
|
|
|
|
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))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|