# file: runme.pl # Test various properties of classes defined in separate modules print "Testing the %import directive\n"; use baseclass; use foo; use bar; use spam; # Create some objects print "Creating some objects\n"; $a = new baseclass::Base(); $b = new foo::Foo(); $c = new bar::Bar(); $d = new spam::Spam(); # Try calling some methods print "Testing some methods\n"; print "Should see 'Base::A' ---> "; $a->A(); print "Should see 'Base::B' ---> "; $a->B(); print "Should see 'Foo::A' ---> "; $b->A(); print "Should see 'Foo::B' ---> "; $b->B(); print "Should see 'Bar::A' ---> "; $c->A(); print "Should see 'Bar::B' ---> "; $c->B(); print "Should see 'Spam::A' ---> "; $d->A(); print "Should see 'Spam::B' ---> "; $d->B(); # Try some casts print "\nTesting some casts\n"; $x = $a->toBase(); print "Should see 'Base::A' ---> "; $x->A(); print "Should see 'Base::B' ---> "; $x->B(); $x = $b->toBase(); print "Should see 'Foo::A' ---> "; $x->A(); print "Should see 'Base::B' ---> "; $x->B(); $x = $c->toBase(); print "Should see 'Bar::A' ---> "; $x->A(); print "Should see 'Base::B' ---> "; $x->B(); $x = $d->toBase(); print "Should see 'Spam::A' ---> "; $x->A(); print "Should see 'Base::B' ---> "; $x->B(); $x = $d->toBar(); print "Should see 'Bar::B' ---> "; $x->B(); print "\nTesting some dynamic casts\n"; $x = $d->toBase(); print " Spam -> Base -> Foo : "; $y = foo::Foo_fromBase($x); if ($y) { print "bad swig\n"; } else { print "good swig\n"; } print " Spam -> Base -> Bar : "; $y = bar::Bar_fromBase($x); if ($y) { print "good swig\n"; } else { print "bad swig\n"; } print " Spam -> Base -> Spam : "; $y = spam::Spam_fromBase($x); if ($y) { print "good swig\n"; } else { print "bad swig\n"; } print " Foo -> Spam : "; #print $b; $y = spam::Spam_fromBase($b); print $y; if ($y) { print "bad swig\n"; } else { print "good swig\n"; }