| #!/usr/bin/env ruby |
| # |
| # This test implementation is directly derived from its Python counterpart. |
| # |
| |
| require 'swig_assert' |
| |
| # This extension to the Warning class is intended for suppressing expected |
| # Ruby warning messages about invalid or redefined Ruby constants - basically |
| # the equivalent of %warnfilter(SWIGWARN_RUBY_WRONG_NAME) but for the moment |
| # the wrapper library is loaded by the Ruby interpreter. |
| # Note: This only works for Ruby 2.4 and later |
| if Object.const_defined?(:Warning) && Warning.respond_to?(:warn) |
| module CustomWarningFilter |
| def warn(*args) |
| msg = args[0] |
| if msg =~ /[Aa]lready initialized constant Preproc::A[56]/ || |
| msg =~ /invalid name .?__GMP_HAVE_/ |
| # ignore |
| else |
| super |
| end |
| end |
| end |
| Warning.extend CustomWarningFilter |
| end |
| |
| require 'preproc' |
| |
| swig_assert_equal('Preproc::endif', '1', binding) |
| swig_assert_equal('Preproc::define', '1', binding) |
| swig_assert_equal('Preproc::ddefined', '1', binding) |
| |
| swig_assert_equal('2 * Preproc::One', 'Preproc::Two', binding) |
| |
| swig_assert_equal('Preproc::methodX(99)', '199', binding) |
| |
| t1 = Preproc::TcxMessageTest |
| t2 = Preproc::TcxMessageBug |
| |