blob: b9512a7b60b1703955a1a33decb995f6e66b03c1 [file]
#!/usr/bin/env ruby
require 'swig_assert'
require 'arrayref'
# Setting a variable that is a reference to an array copies into the array it refers to.
swig_assert_equal('Arrayref.numbers_sum', '10', binding)
Arrayref.numbers_ref = Arrayref.others
swig_assert_equal('Arrayref.numbers_sum', '100', binding)
# An array of char is a string here, and so is a reference to one.
swig_assert_equal('Arrayref.letters', "'abc'", binding)
swig_assert_equal('Arrayref.letters_ref', "'abc'", binding)
Arrayref.letters_ref = "xy"
swig_assert_equal('Arrayref.letters_are', "'xy'", binding)
swig_assert_equal('Arrayref.frozen_ref', "'xyz'", binding)
# A reference to an array of char cannot be nil.
swig_assert_equal('Arrayref.length_of("abc")', '3', binding)
begin
Arrayref.length_of(nil)
raise RuntimeError, "length_of(nil) did not raise"
rescue NullReferenceError
end
member = Arrayref::ArrayRefMember.new
swig_assert_equal('member.sum', '10', binding)
swig_assert_equal('member.text_ref', "'hi'", binding)
member.text_ref = "bye"
swig_assert_equal('member.text_is', "'bye'", binding)
# Setting a reference to an array of arrays copies every element.
Arrayref.grid_ref = Arrayref.other_grid
swig_assert_equal('Arrayref.grid_element(0, 1)', '20', binding)
swig_assert_equal('Arrayref.grid_element(1, 2)', '60', binding)
grid_member = Arrayref::GridRefMember.new
grid_member.rows_ref = Arrayref.other_grid_address
swig_assert_equal('grid_member.element(0, 1)', '20', binding)
swig_assert_equal('grid_member.element(1, 2)', '60', binding)