| # Test various properties of classes defined in separate modules |
| |
| print("Testing the %import directive") |
| |
| if string.sub(_VERSION,1,7)=='Lua 5.0' then |
| -- lua5.0 doesn't have a nice way to do this |
| function loadit(a) |
| lib=loadlib(a..'.dll','luaopen_'..a) or loadlib(a..'.so','luaopen_'..a) |
| assert(lib)() |
| end |
| loadit('base') |
| loadit('foo') |
| loadit('bar') |
| loadit('spam') |
| else |
| -- lua 5.1 does |
| require 'base' |
| require 'foo' |
| require 'bar' |
| require 'spam' |
| end |
| |
| -- 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") |
| 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") |
| |
| 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 then |
| print "bad swig" |
| else |
| print "good swig" |
| end |
| |
| print " Spam -> Base -> Bar : " |
| y = bar.Bar_fromBase(x) |
| if y then |
| print "good swig" |
| else |
| print "bad swig" |
| end |
| |
| print " Spam -> Base -> Spam : " |
| y = spam.Spam_fromBase(x) |
| if y then |
| print "good swig" |
| else |
| print "bad swig" |
| end |
| |
| print " Foo -> Spam : " |
| y = spam.Spam_fromBase(b) |
| if y then |
| print "bad swig" |
| else |
| print "good swig" |
| end |