=pod
Tests methods on the re object
=cut
use strict;
use feature ':5.10';
use Test::More tests => 9;
use re::engine::Plugin (
comp => sub {
my $re = shift;
# Use a stash to pass a single scalar value to each executing
# routine, references work perfectly a reference to anything
# can be passed as well
$re->stash( { x => 5, y => sub { 6 } } );
# Return value not used for now..
},
exec => sub {
my ($re, $str) = @_;
# pattern
cmp_ok($re->pattern, 'eq', ' foobar zoobar ' => '->pattern ok');
# modifiers
my %mod = $re->mod;
ok(exists $mod{i}, 'str flags /i');
ok(exists $mod{x}, 'str flags /x');
like(join('', keys %mod), qr/^[cgimosx]+$/, 'flags contain all-good characters');
# stash
cmp_ok($re->stash->{"x"}, '==', 5, "data correct in stash");
cmp_ok(ref $re->stash->{"y"}, 'eq', 'CODE', "data correct in stash");
cmp_ok(ref $re->stash->{"y"}, 'eq', 'CODE', "data correct in stash");
cmp_ok($re->stash->{"y"}->(), '==', 6, "data correct in stash");
# Pattern contains "foo", "bar" and "zoo", return a true
return $re->pattern =~ /zoo/;
}
);
my $re = qr< foobar zoobar >xi;
if ("input" =~ $re ) {
pass 'pattern matched';
} else {
fail "pattern didn't match";
}