diff options
Diffstat (limited to 'tests/run/methodmangling_cdef.pyx')
-rw-r--r-- | tests/run/methodmangling_cdef.pyx | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/tests/run/methodmangling_cdef.pyx b/tests/run/methodmangling_cdef.pyx new file mode 100644 index 000000000..83f02fa6a --- /dev/null +++ b/tests/run/methodmangling_cdef.pyx @@ -0,0 +1,95 @@ +# mode: run + +def call_cdt_private_cdef(CDefTest o): + return o._CDefTest__private_cdef() + +cdef __c_func(): + return "cdef function" + +cdef __c_var = "Shouldn't see this" + +cdef class CDefTest: + """ + >>> cd = CDefTest() + >>> '_CDefTest__private' in dir(cd) + True + >>> cd._CDefTest__private() + 8 + >>> call_cdt_private_cdef(cd) + 8 + >>> '__private' in dir(cd) + False + >>> '_CDefTest__x' in dir(cd) + True + + >>> '__x' in dir(cd) + False + >>> cd._CDefTest__y + 2 + """ + __x = 1 + cdef public int __y + + def __init__(self): + self.__y = 2 + + def __private(self): return 8 + + cdef __private_cdef(self): return 8 + + def get(self): + """ + >>> CDefTest().get() + (1, 1, 8) + """ + return self._CDefTest__x, self.__x, self.__private() + + def get_inner(self): + """ + >>> CDefTest().get_inner() + (1, 1, 8) + """ + def get(o): + return o._CDefTest__x, o.__x, o.__private() + return get(self) + + def get_c_func(self): + """ + Should still be able to access C function with __names + >>> CDefTest().get_c_func() + 'cdef function' + """ + return __c_func() + + def get_c_func2(self): + """ + Should find mangled name before C __name + >>> CDefTest().get_c_func2() + 'lambda' + """ + _CDefTest__c_func = lambda: "lambda" + return __c_func() + + def get_c_var(self): + """ + >>> CDefTest().get_c_var() + 'c var' + """ + global __c_var + __c_var = "c var" + return __c_var + +def call_inpdx_private_cdef(InPxd o): + return o._InPxd__private_cdef() + +cdef class InPxd: + """ + >>> InPxd()._InPxd__y + 2 + >>> call_inpdx_private_cdef(InPxd()) + 8 + """ + def __init__(self): + self.__y = 2 + + cdef int __private_cdef(self): return 8 |