/branches/gsoc2009-ashishs99/Examples/test-suite/lua/cpp_basic_runme.lua

# · Lua · 64 lines · 62 code · 1 blank · 1 comment · 1 complexity · 6de257b58c388cd3b3c2256139356afd MD5 · raw file

  1. require("import") -- the import fn
  2. import("cpp_basic") -- import code
  3. cb=cpp_basic -- renaming import
  4. -- catch "undefined" global variables
  5. setmetatable(getfenv(),{__index=function (t,i) error("undefined global variable `"..i.."'",2) end})
  6. f=cb.Foo(4)
  7. assert(f.num==4)
  8. f.num=-17
  9. assert(f.num==-17)
  10. b=cb.Bar()
  11. b.fptr=f
  12. assert(b.fptr.num==-17)
  13. assert(b:test(-3,b.fptr)==-5)
  14. f.num=12
  15. assert(b.fptr.num==12)
  16. assert(b.fref.num==-4)
  17. assert(b:test(12,b.fref)==23)
  18. -- references don't take ownership, so if we didn't define this here it might get garbage collected
  19. f2=cb.Foo(23)
  20. b.fref=f2
  21. assert(b.fref.num==23)
  22. assert(b:test(-3,b.fref)==35)
  23. assert(b.fval.num==15)
  24. assert(b:test(3,b.fval)==33)
  25. b.fval=cb.Foo(-15) -- this is safe as it is copied into the C++
  26. assert(b.fval.num==-15)
  27. assert(b:test(3,b.fval)==-27)
  28. f3=b:testFoo(12,b.fref)
  29. assert(f3.num==32)
  30. -- now test global
  31. f4=cb.Foo(6)
  32. cb.Bar_global_fptr=f4
  33. assert(cb.Bar_global_fptr.num==6)
  34. f4.num=8
  35. assert(cb.Bar_global_fptr.num==8)
  36. assert(cb.Bar_global_fref.num==23)
  37. cb.Bar_global_fref=cb.Foo(-7) -- this will set the value
  38. assert(cb.Bar_global_fref.num==-7)
  39. assert(cb.Bar_global_fval.num==3)
  40. cb.Bar_global_fval=cb.Foo(-34)
  41. assert(cb.Bar_global_fval.num==-34)
  42. -- Now test member function pointers
  43. func1_ptr=cb.get_func1_ptr()
  44. func2_ptr=cb.get_func2_ptr()
  45. f.num=4
  46. assert(f:func1(2)==16)
  47. assert(f:func2(2)==-8)
  48. f.func_ptr=func1_ptr
  49. assert(cb.test_func_ptr(f,2)==16)
  50. f.func_ptr=func2_ptr
  51. assert(cb.test_func_ptr(f,2)==-8)