swig/Examples/test-suite/lua/cpp11_shared_ptr_upcast_run...

66 lines
1.9 KiB
Lua

require("cpp11_shared_ptr_upcast")
local s = cpp11_shared_ptr_upcast
-- Test single shared_ptr upcast (Derived -> Base)
assert(s.derived_num1(s.Derived(7)) == 7)
assert(s.base_num1(s.Derived(7)) == -1) -- Upcast works for single shared_ptr
-- Test with nil
assert(s.derived_num1(nil) == 999)
assert(s.base_num1(nil) == 999)
-- Test collections with matching types (no upcast needed)
local derivedList = s.DerivedList()
derivedList:push_back(s.Derived(7))
assert(s.derived_num2(derivedList) == 7)
local derivedMap = s.DerivedMap()
derivedMap:set(0, s.Derived(7))
assert(s.derived_num3(derivedMap) == 7)
local baseList = s.BaseList()
baseList:push_back(s.Base())
assert(s.base_num2(baseList) == -1)
local baseMap = s.BaseMap()
baseMap:set(0, s.Base())
assert(s.base_num3(baseMap) == -1)
-- Test collections with nil
local derivedListNil = s.DerivedList()
derivedListNil:push_back(nil)
assert(s.derived_num2(derivedListNil) == 999)
local derivedMapNil = s.DerivedMap()
derivedMapNil:set(0, nil)
assert(s.derived_num3(derivedMapNil) == 999)
local baseListNil = s.BaseList()
baseListNil:push_back(nil)
assert(s.base_num2(baseListNil) == 999)
local baseMapNil = s.BaseMap()
baseMapNil:set(0, nil)
assert(s.base_num3(baseMapNil) == 999)
-- Test overloaded functions with matching types
assert(s.derived_num(s.Derived(7)) == 7)
assert(s.base_num(s.Derived(7)) == -1)
local derivedList2 = s.DerivedList()
derivedList2:push_back(s.Derived(7))
assert(s.derived_num(derivedList2) == 7)
local derivedMap2 = s.DerivedMap()
derivedMap2:set(0, s.Derived(7))
assert(s.derived_num(derivedMap2) == 7)
-- ptr to shared_ptr tests (simpler cases only - collections of ptr to shared_ptr not yet supported)
assert(s.derived2_num1(s.Derived2(7)) == 7)
assert(s.base2_num1(s.Derived2(7)) == -1) -- Upcast works for pointer to shared_ptr
-- Test nil cases for ptr to shared_ptr
assert(s.derived2_num1(nil) == 888)
assert(s.base2_num1(nil) == 888)