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