PATH: //opt/alt/python311/lib64/python3.11/ctypes/test
FILE_BARU
CREATE
FOLDER_BARU
MKDIR
UPLOAD_FILE
GO
[ .. KEMBALI ]
📄 __init__.py
↓
X
📄 __main__.py
↓
X
📁 __pycache__/
X
📄 test_anon.py
↓
X
📄 test_array_in_pointer.py
↓
X
📄 test_arrays.py
↓
X
📄 test_as_parameter.py
↓
X
📄 test_bitfields.py
↓
X
📄 test_buffers.py
↓
X
📄 test_bytes.py
↓
X
📄 test_byteswap.py
↓
X
📄 test_callbacks.py
↓
X
📄 test_cast.py
↓
X
📄 test_cfuncs.py
↓
X
📄 test_checkretval.py
↓
X
📄 test_delattr.py
↓
X
📄 test_errno.py
↓
X
📄 test_find.py
↓
X
📄 test_frombuffer.py
↓
X
📄 test_funcptr.py
↓
X
📄 test_functions.py
↓
X
📄 test_incomplete.py
↓
X
📄 test_init.py
↓
X
📄 test_internals.py
↓
X
📄 test_keeprefs.py
↓
X
📄 test_libc.py
↓
X
📄 test_loading.py
↓
X
📄 test_macholib.py
↓
X
📄 test_memfunctions.py
↓
X
📄 test_numbers.py
↓
X
📄 test_objects.py
↓
X
📄 test_parameters.py
↓
X
📄 test_pep3118.py
↓
X
📄 test_pickling.py
↓
X
📄 test_pointers.py
↓
X
📄 test_prototypes.py
↓
X
📄 test_python_api.py
↓
X
📄 test_random_things.py
↓
X
📄 test_refcounts.py
↓
X
📄 test_repr.py
↓
X
📄 test_returnfuncptrs.py
↓
X
📄 test_simplesubclasses.py
↓
X
📄 test_sizes.py
↓
X
📄 test_slicing.py
↓
X
📄 test_stringptr.py
↓
X
📄 test_strings.py
↓
X
📄 test_struct_fields.py
↓
X
📄 test_structures.py
↓
X
📄 test_unaligned_structures.py
↓
X
📄 test_unicode.py
↓
X
📄 test_values.py
↓
X
📄 test_varsize_struct.py
↓
X
📄 test_win32.py
↓
X
📄 test_wintypes.py
↓
X
SAVING...
BERHASIL DIUBAH!
EDITING: test_refcounts.py
import unittest from test import support import ctypes import gc MyCallback = ctypes.CFUNCTYPE(ctypes.c_int, ctypes.c_int) OtherCallback = ctypes.CFUNCTYPE(ctypes.c_int, ctypes.c_int, ctypes.c_ulonglong) import _ctypes_test dll = ctypes.CDLL(_ctypes_test.__file__) class RefcountTestCase(unittest.TestCase): @support.refcount_test def test_1(self): from sys import getrefcount as grc f = dll._testfunc_callback_i_if f.restype = ctypes.c_int f.argtypes = [ctypes.c_int, MyCallback] def callback(value): #print "called back with", value return value self.assertEqual(grc(callback), 2) cb = MyCallback(callback) self.assertGreater(grc(callback), 2) result = f(-10, cb) self.assertEqual(result, -18) cb = None gc.collect() self.assertEqual(grc(callback), 2) @support.refcount_test def test_refcount(self): from sys import getrefcount as grc def func(*args): pass # this is the standard refcount for func self.assertEqual(grc(func), 2) # the CFuncPtr instance holds at least one refcount on func: f = OtherCallback(func) self.assertGreater(grc(func), 2) # and may release it again del f self.assertGreaterEqual(grc(func), 2) # but now it must be gone gc.collect() self.assertEqual(grc(func), 2) class X(ctypes.Structure): _fields_ = [("a", OtherCallback)] x = X() x.a = OtherCallback(func) # the CFuncPtr instance holds at least one refcount on func: self.assertGreater(grc(func), 2) # and may release it again del x self.assertGreaterEqual(grc(func), 2) # and now it must be gone again gc.collect() self.assertEqual(grc(func), 2) f = OtherCallback(func) # the CFuncPtr instance holds at least one refcount on func: self.assertGreater(grc(func), 2) # create a cycle f.cycle = f del f gc.collect() self.assertEqual(grc(func), 2) class AnotherLeak(unittest.TestCase): def test_callback(self): import sys proto = ctypes.CFUNCTYPE(ctypes.c_int, ctypes.c_int, ctypes.c_int) def func(a, b): return a * b * 2 f = proto(func) a = sys.getrefcount(ctypes.c_int) f(1, 2) self.assertEqual(sys.getrefcount(ctypes.c_int), a) @support.refcount_test def test_callback_py_object_none_return(self): # bpo-36880: test that returning None from a py_object callback # does not decrement the refcount of None. for FUNCTYPE in (ctypes.CFUNCTYPE, ctypes.PYFUNCTYPE): with self.subTest(FUNCTYPE=FUNCTYPE): @FUNCTYPE(ctypes.py_object) def func(): return None # Check that calling func does not affect None's refcount. for _ in range(10000): func() if __name__ == '__main__': unittest.main()
SIMPAN PERUBAHAN