diff options
Diffstat (limited to 'Examples/lua/import/runme.lua')
-rw-r--r-- | Examples/lua/import/runme.lua | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/Examples/lua/import/runme.lua b/Examples/lua/import/runme.lua new file mode 100644 index 0000000..9cd7ae0 --- /dev/null +++ b/Examples/lua/import/runme.lua @@ -0,0 +1,103 @@ +# 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 doesnt 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 |