swig/Examples/test-suite/python/callback_runme.py
William S Fulton cf1624ebc4 Python static method wrapper changes
- Static method wrappers were using the 'fastproxy' approach by default.
  This is inconsistent with instance method wrappers. The fastproxy approach
  is now turned off by default to be consistent with instance methods.
  Static method wrappers can now also be controlled using the -fastproxy and
  -olddefs options.

  Example:

    struct Klass {
      static int statmethod(int a = 2);
    };

  generates:

  class Klass(object):
      ...
      @staticmethod
      def statmethod(a=2):
          return _example.Klass_statmethod(a)

  instead of:

    class Klass(object):
      ...
      statmethod = staticmethod(_example.Klass_statmethod)

- Modernise wrappers for static methods to use decorator syntax - @staticmethod.

- Add missing runtime test for static class methods and using the actual
  class method.
2019-01-16 08:21:00 +00:00

34 lines
608 B
Python

import _callback
from callback import *
if foo(2) != 2:
raise RuntimeError
if A_bar(2) != 4:
raise RuntimeError
if foobar(3, _callback.foo) != foo(3):
raise RuntimeError
if foobar(3, foo) != foo(3):
raise RuntimeError
if foobar(3, A.bar) != A.bar(3):
raise RuntimeError
if foobar(3, A_bar) != A_bar(3):
raise RuntimeError
if foobar(3, foof) != foof(3):
raise RuntimeError
if foobar_i(3, foo_i) != foo_i(3):
raise RuntimeError
if foobar_d(3.5, foo_d) != foo_d(3.5):
raise RuntimeError
a = A()
if foobarm(3, a, A.foom_cb_ptr) != a.foom(3):
raise RuntimeError