| # 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")) |