mirror of https://github.com/swig/swig
98 lines
1.8 KiB
Python
98 lines
1.8 KiB
Python
# 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"))
|