# file: runme.py # Test various properties of classes defined in separate modules import sys print("Testing the %import directive") 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.Base() b = foo.Foo() c = bar.Bar() d = spam.Spam() # 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.Foo.fromBase(x) print(" Spam -> Base -> Foo : {} swig".format("bad" if y else "good")) y = bar.Bar.fromBase(x) print(" Spam -> Base -> Bar : {} swig".format("good" if y else "bad")) y = spam.Spam.fromBase(x) print(" Spam -> Base -> Spam : {} swig".format("good" if y else "bad")) y = spam.Spam.fromBase(b) print(" Foo -> Spam : {} swig".format("bad" if y else "good"))