import director_basic class PyFoo(director_basic.Foo): def ping(self): return "PyFoo::ping()" a = PyFoo() if a.ping() != "PyFoo::ping()": raise RuntimeError(a.ping()) if a.pong() != "Foo::pong();PyFoo::ping()": raise RuntimeError(a.pong()) b = director_basic.Foo() if b.ping() != "Foo::ping()": raise RuntimeError(b.ping()) if b.pong() != "Foo::pong();Foo::ping()": raise RuntimeError(b.pong()) a = director_basic.A1(1) if a.rg(2) != 2: raise RuntimeError class PyClass(director_basic.MyClass): def method(self, vptr): self.cmethod = 7 pass def vmethod(self, b): b.x = b.x + 31 return b b = director_basic.Bar(3) d = director_basic.MyClass() c = PyClass() cc = director_basic.MyClass.get_self(c) dd = director_basic.MyClass.get_self(d) bc = cc.cmethod(b) bd = dd.cmethod(b) cc.method(b) if c.cmethod != 7: raise RuntimeError if bc.x != 34: raise RuntimeError if bd.x != 16: raise RuntimeError class PyMulti(director_basic.Foo, director_basic.MyClass): def __init__(self): director_basic.Foo.__init__(self) director_basic.MyClass.__init__(self) pass def vmethod(self, b): b.x = b.x + 31 return b def ping(self): return "PyFoo::ping()" a = 0 for i in range(0, 100): pymult = PyMulti() pymult.pong() del pymult pymult = PyMulti() p1 = director_basic.Foo.get_self(pymult) p2 = director_basic.MyClass.get_self(pymult) p1.ping() p2.vmethod(bc)