diff options
Diffstat (limited to 'Examples/test-suite/ruby/global_immutable_vars_runme.rb')
-rw-r--r-- | Examples/test-suite/ruby/global_immutable_vars_runme.rb | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/Examples/test-suite/ruby/global_immutable_vars_runme.rb b/Examples/test-suite/ruby/global_immutable_vars_runme.rb new file mode 100644 index 000000000..ffbea270f --- /dev/null +++ b/Examples/test-suite/ruby/global_immutable_vars_runme.rb @@ -0,0 +1,52 @@ +#!/usr/bin/env ruby +# +# Here the proper generation of mutable and immutable variables is tested +# in the target language. +# Immutable variables do not have "<var>=" methods generated by SWIG, +# therefore trying to assign these variables shall throw a NoMethodError +# exception. +# + +require 'swig_assert' + +require 'global_immutable_vars' + +# first check if all variables can be read +swig_assert_each_line( <<EOF ) +Global_immutable_vars::default_mutable_var == 40 +Global_immutable_vars::global_immutable_var == 41 +Global_immutable_vars::specific_mutable_var == 42 +Global_immutable_vars::global_mutable_var == 43 +Global_immutable_vars::specific_immutable_var == 44 +EOF + +# check that all mutable variables can be modified +swig_assert_each_line( <<EOF ) +Global_immutable_vars::default_mutable_var = 80 +Global_immutable_vars::default_mutable_var == 80 +Global_immutable_vars::specific_mutable_var = 82 +Global_immutable_vars::specific_mutable_var == 82 +Global_immutable_vars::global_mutable_var = 83 +Global_immutable_vars::global_mutable_var == 83 +EOF + +# now check that immutable variables cannot be modified +had_exception = false +begin + Global_immutable_vars::global_immutable_var = 81 +rescue NoMethodError => e + had_exception = true +end +swig_assert(had_exception, nil, + "Global_immutable_vars::global_immutable_var is writable (expected to be immutable)") + +had_exception = false +begin + Global_immutable_vars::specific_immutable_var = 81 +rescue NoMethodError => e + had_exception = true +end +swig_assert(had_exception, nil, + "Global_immutable_vars::specific_immutable_var is writable (expected to be immutable)") + +swig_assert(Global_immutable_vars::check_values(80, 41, 82, 83, 44) == 1, nil, "Check values failed") |