use Test; BEGIN { plan tests => 6 } use Data::Dumper; use Inline::Ruby qw(rb_eval rb_bind_func rb_bind_class); rb_eval <<'END'; # An unbound method def smut(*args) print "=============================================================\n" print "Yo! smut() called inside ruby!\nArguments:\n" args.each {|x| printf("\t%s\n", x)} print "=============================================================\n" return [52, 25] end # A class class Scrooge def initialize print "=============================================================\n" print "Creating a new instance of Scrooge in Ruby!\n" print "=============================================================\n" end def here_i_am(*args) print "=============================================================\n" print "This is ruby's here_i_am method\nArguments:\n" #args.each {|x| printf("\t%s\n", x)} p args print "=============================================================\n" return 17 end end END ok(1); rb_bind_func('main::smut', 'smut'); print "Calling the Ruby function 'smut()'...\n"; my $foo = smut(0, 0xFF, "neil"); print Dumper $foo; ok(ref($foo), 'ARRAY'); ok($foo->[0], 52); ok($foo->[1], 25); rb_bind_class('main::Scrooge', 'Scrooge'); print "Creating an instance of the Ruby class 'Scrooge()'...\n"; my $o = Scrooge->new; print Dumper $o; ok($o); my $bar = $o->here_i_am({neil => 10}); ok($bar, 17); print Dumper $bar;