mirror of https://github.com/swig/swig.git
66 lines
1.9 KiB
Lua
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)
|