dofile("myassert.lua") -- type convertion tests assert(tolua.type(A.last) == 'Tst_A') -- first time the object is mapped assert(tolua.type(B.last) == 'Tst_B') -- type convertion to specialized type assert(tolua.type(A.last) == 'Tst_B') -- no convertion: obj already mapped as B local a = A:new() assert(tolua.type(A.last) == 'Tst_A') -- no type convertion: same type local b = B:new() assert(tolua.type(A.last) == 'Tst_B') -- no convertion: obj already mapped as B local c = luaC:new(0) assert(tolua.type(A.last) == 'Tst_C') -- no convertion: obj already mapped as C assert(tolua.type(luaC.last) == 'Tst_C') local aa = A.AA:new() local bb = A.BB:new() local xx = create_aa() -- casting test local base = bb:Base(); local derived = tolua.cast(base,"Tst_A::Tst_BB"); assert(derived:classname()=="Tst_BB") -- method calling tests assert(a:a() == 'A') assert(b:a() == 'A') assert(b:b() == 'B') assert(c:a() == 'A') assert(c:b() == 'B') assert(c:c() == 'C') assert(aa:aa() == 'AA') assert(bb:aa() == bb:Base():aa()) assert(xx:aa() == 'AA') assert(is_aa(bb) == true) -- test ownershipping handling -- should delete objects: 6 7 8 9 10 (it may vary!) remark = [[ local set = {} for i=1,10 do local c = luaC:new(i) tolua.takeownership(c) set[i] = c end for i=1,5 do tolua.releaseownership(set[i]) end --]] print("Class test OK")