mirror of https://github.com/swig/swig.git
56 lines
2.6 KiB
Lua
56 lines
2.6 KiB
Lua
require("cpp11_rvalue_reference_move")
|
|
catch_undef_globs() -- catch "undefined" global variables
|
|
|
|
-- Function containing rvalue reference parameter
|
|
cpp11_rvalue_reference_move.Counter.reset_counts()
|
|
mo = cpp11_rvalue_reference_move.MovableCopyable(222)
|
|
cpp11_rvalue_reference_move.Counter.check_counts(1, 0, 0, 0, 0, 0)
|
|
cpp11_rvalue_reference_move.MovableCopyable.movein(mo)
|
|
cpp11_rvalue_reference_move.Counter.check_counts(1, 0, 0, 1, 0, 2)
|
|
assert(cpp11_rvalue_reference_move.MovableCopyable_is_nullptr(mo), "is_nullptr failed")
|
|
mo = nil
|
|
cpp11_rvalue_reference_move.Counter.check_counts(1, 0, 0, 1, 0, 2)
|
|
|
|
-- Move constructor test
|
|
cpp11_rvalue_reference_move.Counter.reset_counts()
|
|
mo = cpp11_rvalue_reference_move.MovableCopyable(222)
|
|
cpp11_rvalue_reference_move.Counter.check_counts(1, 0, 0, 0, 0, 0)
|
|
mo_moved = cpp11_rvalue_reference_move.MovableCopyable(mo)
|
|
cpp11_rvalue_reference_move.Counter.check_counts(1, 0, 0, 1, 0, 1)
|
|
assert(cpp11_rvalue_reference_move.MovableCopyable_is_nullptr(mo), "is_nullptr failed")
|
|
mo = nil
|
|
cpp11_rvalue_reference_move.Counter.check_counts(1, 0, 0, 1, 0, 1)
|
|
mo_moved = nil
|
|
collectgarbage() -- gc nudge needed here
|
|
cpp11_rvalue_reference_move.Counter.check_counts(1, 0, 0, 1, 0, 2)
|
|
|
|
-- Move assignment operator test
|
|
cpp11_rvalue_reference_move.Counter.reset_counts()
|
|
mo111 = cpp11_rvalue_reference_move.MovableCopyable(111)
|
|
mo222 = cpp11_rvalue_reference_move.MovableCopyable(222)
|
|
cpp11_rvalue_reference_move.Counter.check_counts(2, 0, 0, 0, 0, 0)
|
|
mo111:MoveAssign(mo222)
|
|
cpp11_rvalue_reference_move.Counter.check_counts(2, 0, 0, 0, 1, 1)
|
|
assert(cpp11_rvalue_reference_move.MovableCopyable_is_nullptr(mo222), "is_nullptr failed")
|
|
mo222 = nil
|
|
cpp11_rvalue_reference_move.Counter.check_counts(2, 0, 0, 0, 1, 1)
|
|
mo111 = nil
|
|
collectgarbage() -- gc nudge needed here
|
|
cpp11_rvalue_reference_move.Counter.check_counts(2, 0, 0, 0, 1, 2)
|
|
|
|
-- null check
|
|
cpp11_rvalue_reference_move.Counter.reset_counts()
|
|
s, msg = pcall(function() cpp11_rvalue_reference_move.MovableCopyable.movein(nil) end)
|
|
assert(not s and msg:find("Error in MovableCopyable::movein (arg 1), expected 'MovableCopyable &&' got 'nil'", 1, true))
|
|
cpp11_rvalue_reference_move.Counter.check_counts(0, 0, 0, 0, 0, 0)
|
|
|
|
-- output
|
|
cpp11_rvalue_reference_move.Counter.reset_counts()
|
|
mc = cpp11_rvalue_reference_move.MovableCopyable.moveout(1234)
|
|
cpp11_rvalue_reference_move.Counter.check_counts(2, 0, 0, 0, 1, 1)
|
|
cpp11_rvalue_reference_move.MovableCopyable.check_numbers_match(mc, 1234)
|
|
|
|
s, msg = pcall(function() cpp11_rvalue_reference_move.MovableCopyable.movein(mc) end)
|
|
assert(not s and msg:find("Cannot release ownership as memory is not owned", 1, true))
|
|
cpp11_rvalue_reference_move.Counter.check_counts(2, 0, 0, 0, 1, 1)
|