1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
from python_flatstaticmethod import *
import inspect
# This testcase tests C++ class static functions when using legacy "flattened"
# staticmethod access, A_bar, as well as the normal staticmethod access, A.bar.
def check(got, expected):
if got != expected:
raise RuntimeError("\ngot :{}\nwant:{}\n".format(got, expected))
if A_bar(2) != 4:
raise RuntimeError
if A.bar(2) != 4:
raise RuntimeError
# %callback
if foobar(3, A_bar) != A_bar(3):
raise RuntimeError
if foobar(3, A.bar) != A_bar(3):
raise RuntimeError
# kwargs
if A_pub() != 1:
raise RuntimeError
if A_pub(b=2) != 3:
raise RuntimeError
if A_pub(b=10,a=20) != 30:
raise RuntimeError
if A.pub() != 1:
raise RuntimeError
if A.pub(b=2) != 3:
raise RuntimeError
if A.pub(b=10,a=20) != 30:
raise RuntimeError
check(inspect.getdoc(A_func0static),
"A_func0static(e, arg2, hello, f=2) -> int")
check(inspect.getdoc(A_func1static),
"A_func1static(A e, short arg2, Tuple hello, double f=2) -> int")
# overloaded static functions
if A_over(3) != "over:int":
raise RuntimeError("A::over(int)")
if A_over(3.0) != "over:double":
raise RuntimeError("A::over(double)")
if A_over("hello") != "over:char *":
raise RuntimeError("A::over(char *)")
if A.over(3) != "over:int":
raise RuntimeError("A::over(int)")
if A.over(3.0) != "over:double":
raise RuntimeError("A::over(double)")
if A.over("hello") != "over:char *":
raise RuntimeError("A::over(char *)")
# default args
if A_defargs() != 30:
raise RuntimeError
if A_defargs(1) != 21:
raise RuntimeError
if A_defargs(1, 2) != 3:
raise RuntimeError
if A.defargs() != 30:
raise RuntimeError
if A.defargs(1) != 21:
raise RuntimeError
if A.defargs(1, 2) != 3:
raise RuntimeError
# %extend
if A_staticextended(11) != 11:
raise RuntimeError
if A.staticextended(11) != 11:
raise RuntimeError
|