✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ beluga.o2switch.net ​🇻​♯➤ 4.18.0-553.123.2.lve.el8.x86_64 #1 SMP 🇾​♯➤ 2026

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 185.154.139.77 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.84
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗙𝗙 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ 𝗔𝗟𝗟 𝗪𝗢𝗥𝗞𝗜𝗡𝗚....

𝗛𝗢𝗠𝗘
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /opt/alt/python36/lib64/python3.6/ctypes/test//test_funcptr.py
import unittest
from ctypes import *

try:
    WINFUNCTYPE
except NameError:
    # fake to enable this test on Linux
    WINFUNCTYPE = CFUNCTYPE

import _ctypes_test
lib = CDLL(_ctypes_test.__file__)

class CFuncPtrTestCase(unittest.TestCase):
    def test_basic(self):
        X = WINFUNCTYPE(c_int, c_int, c_int)

        def func(*args):
            return len(args)

        x = X(func)
        self.assertEqual(x.restype, c_int)
        self.assertEqual(x.argtypes, (c_int, c_int))
        self.assertEqual(sizeof(x), sizeof(c_voidp))
        self.assertEqual(sizeof(X), sizeof(c_voidp))

    def test_first(self):
        StdCallback = WINFUNCTYPE(c_int, c_int, c_int)
        CdeclCallback = CFUNCTYPE(c_int, c_int, c_int)

        def func(a, b):
            return a + b

        s = StdCallback(func)
        c = CdeclCallback(func)

        self.assertEqual(s(1, 2), 3)
        self.assertEqual(c(1, 2), 3)
        # The following no longer raises a TypeError - it is now
        # possible, as in C, to call cdecl functions with more parameters.
        #self.assertRaises(TypeError, c, 1, 2, 3)
        self.assertEqual(c(1, 2, 3, 4, 5, 6), 3)
        if not WINFUNCTYPE is CFUNCTYPE:
            self.assertRaises(TypeError, s, 1, 2, 3)

    def test_structures(self):
        WNDPROC = WINFUNCTYPE(c_long, c_int, c_int, c_int, c_int)

        def wndproc(hwnd, msg, wParam, lParam):
            return hwnd + msg + wParam + lParam

        HINSTANCE = c_int
        HICON = c_int
        HCURSOR = c_int
        LPCTSTR = c_char_p

        class WNDCLASS(Structure):
            _fields_ = [("style", c_uint),
                        ("lpfnWndProc", WNDPROC),
                        ("cbClsExtra", c_int),
                        ("cbWndExtra", c_int),
                        ("hInstance", HINSTANCE),
                        ("hIcon", HICON),
                        ("hCursor", HCURSOR),
                        ("lpszMenuName", LPCTSTR),
                        ("lpszClassName", LPCTSTR)]

        wndclass = WNDCLASS()
        wndclass.lpfnWndProc = WNDPROC(wndproc)

        WNDPROC_2 = WINFUNCTYPE(c_long, c_int, c_int, c_int, c_int)

        # This is no longer true, now that WINFUNCTYPE caches created types internally.
        ## # CFuncPtr subclasses are compared by identity, so this raises a TypeError:
        ## self.assertRaises(TypeError, setattr, wndclass,
        ##                  "lpfnWndProc", WNDPROC_2(wndproc))
        # instead:

        self.assertIs(WNDPROC, WNDPROC_2)
        # 'wndclass.lpfnWndProc' leaks 94 references.  Why?
        self.assertEqual(wndclass.lpfnWndProc(1, 2, 3, 4), 10)


        f = wndclass.lpfnWndProc

        del wndclass
        del wndproc

        self.assertEqual(f(10, 11, 12, 13), 46)

    def test_dllfunctions(self):

        def NoNullHandle(value):
            if not value:
                raise WinError()
            return value

        strchr = lib.my_strchr
        strchr.restype = c_char_p
        strchr.argtypes = (c_char_p, c_char)
        self.assertEqual(strchr(b"abcdefghi", b"b"), b"bcdefghi")
        self.assertEqual(strchr(b"abcdefghi", b"x"), None)


        strtok = lib.my_strtok
        strtok.restype = c_char_p
        # Neither of this does work: strtok changes the buffer it is passed
##        strtok.argtypes = (c_char_p, c_char_p)
##        strtok.argtypes = (c_string, c_char_p)

        def c_string(init):
            size = len(init) + 1
            return (c_char*size)(*init)

        s = b"a\nb\nc"
        b = c_string(s)

##        b = (c_char * (len(s)+1))()
##        b.value = s

##        b = c_string(s)
        self.assertEqual(strtok(b, b"\n"), b"a")
        self.assertEqual(strtok(None, b"\n"), b"b")
        self.assertEqual(strtok(None, b"\n"), b"c")
        self.assertEqual(strtok(None, b"\n"), None)

    def test_abstract(self):
        from ctypes import _CFuncPtr

        self.assertRaises(TypeError, _CFuncPtr, 13, "name", 42, "iid")

if __name__ == '__main__':
    unittest.main()


Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
25 Jul 2024 8.41 AM
root / linksafe
0755
__pycache__
--
25 Jul 2024 8.41 AM
root / linksafe
0755
__init__.py
0.39 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
__main__.py
0.066 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_anon.py
2.48 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_array_in_pointer.py
1.697 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_arrays.py
5.876 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_as_parameter.py
6.757 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_bitfields.py
9.814 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_buffers.py
2.23 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_bytes.py
1.94 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_byteswap.py
11.144 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_callbacks.py
9.313 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_cast.py
3.641 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_cfuncs.py
7.5 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_checkretval.py
0.945 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_delattr.py
0.521 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_errno.py
2.248 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_find.py
3.855 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_frombuffer.py
5.093 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_funcptr.py
3.932 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_functions.py
12.261 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_incomplete.py
0.999 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_init.py
1.015 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_internals.py
2.569 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_keeprefs.py
3.963 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_libc.py
0.981 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_loading.py
4.215 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_macholib.py
1.787 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_memfunctions.py
3.216 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_numbers.py
9.074 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_objects.py
1.638 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_parameters.py
9.344 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_pep3118.py
8.316 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_pickling.py
2.166 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_pointers.py
7.069 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_prototypes.py
6.685 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_python_api.py
2.799 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_random_things.py
2.761 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_refcounts.py
2.516 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_repr.py
0.822 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_returnfuncptrs.py
2.825 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_simplesubclasses.py
1.259 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_sizes.py
0.785 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_slicing.py
5.884 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_stringptr.py
2.477 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_strings.py
6.968 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_struct_fields.py
2.364 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_structures.py
16.75 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_unaligned_structures.py
1.187 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_unicode.py
1.72 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_values.py
3.751 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_varsize_struct.py
1.799 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_win32.py
5.959 KB
17 Apr 2024 5.19 PM
root / linksafe
0644
test_wintypes.py
1.432 KB
17 Apr 2024 5.19 PM
root / linksafe
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF