| from cpp_parameters import * |
| |
| # Testing correct and incorrect parameter counts being passed (kwargs and non-kwargs) |
| # Note that the implementation depends a lot on whether zero, one, two or more args are being wrapped |
| |
| def is_python_fastproxy(): |
| """Return True if SWIG is generating Python code using -fastproxy.""" |
| import cpp_parameters |
| # Note: _swig_new_instance_method is only generated when using -fastproxy |
| return hasattr(cpp_parameters, "_swig_new_instance_method") |
| |
| # Zero parameters expected |
| x = Zero() |
| try: |
| x = Zero(z=0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| x = Zero(0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| |
| try: |
| x.zero(z=0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| x.zero(0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| |
| try: |
| Zero.stat_zero(z=0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| Zero.stat_zero(0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| |
| try: |
| global_zero(z=0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| global_zero(0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| |
| # One mandatory parameter expected |
| x = One(1) |
| try: |
| x = One(a=1, z=0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| x = One(1, 0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| |
| try: |
| x.one(a=1, z=0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| x.one(1, 0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| |
| try: |
| One.stat_one(a=1, z=0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| One.stat_one(1, 0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| |
| try: |
| global_one(a=1, z=0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| global_one(1, 0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| |
| # Two mandatory parameters expected |
| x = Two(1, 2) |
| try: |
| x = Two(a=1, b=2, z=0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| x = Two(1, 2, 0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| |
| try: |
| x.two(a=1, b=2, z=0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| x.two(1, 2, 0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| |
| try: |
| Two.stat_two(a=1, b=2, z=0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| Two.stat_two(1, 2, 0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| |
| try: |
| global_two(a=1, b=2, z=0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| global_two(1, 2, 0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| |
| # Single optional parameter expected |
| x = Single(1) |
| try: |
| x = Single(a=1, z=0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| x = Single(1, 0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| |
| try: |
| x.single(a=1, z=0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| x.single(1, 0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| |
| try: |
| Single.stat_single(a=1, z=0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| Single.stat_single(1, 0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| |
| try: |
| global_single(a=1, z=0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| global_single(1, 0) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| |
| # Test that -builtin option throws TypeError if kwargs are used even when they look like they should work, kwargs are not supported unless using -keyword. |
| # Also same for -fastproxy option except that kwargs are supported by default for constructors. TODO: Fix inconsistency. |
| |
| if is_python_builtin() or is_python_fastproxy(): |
| # One mandatory parameter in API |
| x = One(1) |
| if is_python_fastproxy(): |
| x = One(a=1) |
| else: |
| try: |
| x = One(a=1) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| x.one(a=1) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| One.stat_one(a=1) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| global_one(a=1) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| |
| # Two mandatory parameters in API |
| x = Two(1, 2) |
| if is_python_fastproxy(): |
| x = Two(a=1, b=2) |
| else: |
| try: |
| x = Two(a=1, b=2) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| x.two(a=1, b=2) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| Two.stat_two(a=1, b=2) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| global_two(a=1, b=2) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| |
| # Single optional parameter in API |
| x = Single(1) |
| if is_python_fastproxy(): |
| x = Single(a=1) |
| else: |
| try: |
| x = Single(a=1) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| x.single(a=1) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| Single.stat_single(a=1) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| try: |
| global_single(a=1) |
| raise RuntimeError("Missed throw") |
| except TypeError: |
| pass |
| |
| else: |
| # Non-builtin should work as expected |
| # One mandatory parameter in API |
| x = One(a=1) |
| x.one(a=1) |
| One.stat_one(a=1) |
| global_one(a=1) |
| |
| # Two mandatory parameters in API |
| x = Two(a=1, b=2) |
| x.two(a=1, b=2) |
| Two.stat_two(a=1, b=2) |
| global_two(a=1, b=2) |
| |
| # Single optional parameter in API |
| x = Single(a=1) |
| x.single(a=1) |
| Single.stat_single(a=1) |
| global_single(a=1) |