blob: ed863bb4824d4ef12551deec55520c9369298c0d [file]
#!/usr/bin/env ruby
require 'swig_assert'
require 'cpp11_rvalue_reference_array'
def check_nil_rejected(name)
begin
yield
raise RuntimeError, "#{name} accepted nil"
rescue NullReferenceError
end
end
# An rvalue reference to an array is passed as a reference to an array, which cannot be nil.
swig_assert_equal('Cpp11_rvalue_reference_array.sum_of(Cpp11_rvalue_reference_array.others_address)', '100', binding)
swig_assert_equal('Cpp11_rvalue_reference_array.first_of(Cpp11_rvalue_reference_array.others_unsized_address)', '10', binding)
swig_assert_equal('Cpp11_rvalue_reference_array.items_sum(Cpp11_rvalue_reference_array.items_address)', '3', binding)
check_nil_rejected("sum_of") { Cpp11_rvalue_reference_array.sum_of(nil) }
check_nil_rejected("first_of") { Cpp11_rvalue_reference_array.first_of(nil) }
# An rvalue reference to an array of char is a string.
swig_assert_equal('Cpp11_rvalue_reference_array.length_of("abc")', '3', binding)
swig_assert_equal('Cpp11_rvalue_reference_array.length_of_writable("xy")', '2', binding)
check_nil_rejected("length_of") { Cpp11_rvalue_reference_array.length_of(nil) }
# Setting a variable that is an rvalue reference to an array copies into the array it refers to.
swig_assert_equal('Cpp11_rvalue_reference_array.numbers_sum', '10', binding)
Cpp11_rvalue_reference_array.numbers_rref = Cpp11_rvalue_reference_array.others
swig_assert_equal('Cpp11_rvalue_reference_array.numbers_sum', '100', binding)
swig_assert_equal('Cpp11_rvalue_reference_array.letters_rref', "'abc'", binding)
Cpp11_rvalue_reference_array.letters_rref = "xy"
swig_assert_equal('Cpp11_rvalue_reference_array.letters_are', "'xy'", binding)
member = Cpp11_rvalue_reference_array::RvalueRefArrayMember.new
swig_assert_equal('member.sum', '10', binding)
member.member_rref = Cpp11_rvalue_reference_array.others_address
swig_assert_equal('member.sum', '100', binding)
swig_assert_equal('member.text_rref', "'hi'", binding)
member.text_rref = "bye"
swig_assert_equal('member.text_is', "'bye'", binding)