+=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";
+}
+