#!/usr/bin/perl -w
use Test;
BEGIN { plan tests => 8 }
use strict;
use Data::Dumper;
use Inline::Ruby qw(rb_eval);
my @exc = (
['divided by 0', 'ZeroDivisionError'],
["compile error\n(eval): parse error", 'SyntaxError'],
);
my $n = 0;
sub e {
my $str = shift;
eval { rb_eval($str) };
return unless $@;
my $x = $@;
my $inspect = sprintf("#<%s: %s>", $x->type, $x->message);
# Methods:
ok($x->message, $exc[$n][0]);
print Dumper $x->message;
ok($x->type, $exc[$n][1]);
print Dumper $x->type;
ok($x->inspect, $inspect);
print Dumper $x->inspect;
# Stringification:
ok("$x", "$inspect\n");
print "Stringified: '$x'\n";
# Backtrace (not tested)
print Dumper $x->backtrace;
$n++;
}
e "1/0"; # div by zero
e "1/"; # parse error