summaryrefslogtreecommitdiff
path: root/tests/run/methodmangling_cdef.pyx
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run/methodmangling_cdef.pyx')
-rw-r--r--tests/run/methodmangling_cdef.pyx95
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