# file: runme.py # Test various properties of classes defined in separate modules import sys print("Testing the %import directive with templates") import base import foo import bar import spam def write_flush(s): # Python 2/3 compatible write and flush sys.stdout.write(s) sys.stdout.flush() # Create some objects print("Creating some objects") a = base.intBase() b = foo.intFoo() c = bar.intBar() d = spam.intSpam() # Try calling some methods print("Testing some methods") write_flush(" Should see 'Base::A' ---> ") a.A() write_flush(" Should see 'Base::B' ---> ") a.B() write_flush(" Should see 'Foo::A' ---> ") b.A() write_flush(" Should see 'Foo::B' ---> ") b.B() write_flush(" Should see 'Bar::A' ---> ") c.A() write_flush(" Should see 'Bar::B' ---> ") c.B() write_flush(" Should see 'Spam::A' ---> ") d.A() write_flush(" Should see 'Spam::B' ---> ") d.B() # Try some casts print("\nTesting some casts\n") x = a.toBase() write_flush(" Should see 'Base::A' ---> ") x.A() write_flush(" Should see 'Base::B' ---> ") x.B() x = b.toBase() write_flush(" Should see 'Foo::A' ---> ") x.A() write_flush(" Should see 'Base::B' ---> ") x.B() x = c.toBase() write_flush(" Should see 'Bar::A' ---> ") x.A() write_flush(" Should see 'Base::B' ---> ") x.B() x = d.toBase() write_flush(" Should see 'Spam::A' ---> ") x.A() write_flush(" Should see 'Base::B' ---> ") x.B() x = d.toBar() write_flush(" Should see 'Bar::B' ---> ") x.B() print("\nTesting some dynamic casts\n") x = d.toBase() y = foo.intFoo.fromBase(x) print(" Spam -> Base -> Foo : {} swig".format("bad" if y else "good")) y = bar.intBar.fromBase(x) print(" Spam -> Base -> Bar : {} swig".format("good" if y else "bad")) y = spam.intSpam.fromBase(x) print(" Spam -> Base -> Spam : {} swig".format("good" if y else "bad")) y = spam.intSpam.fromBase(b) print(" Foo -> Spam : {} swig".format("bad" if y else "good"))