]> git.vpit.fr Git - perl/modules/re-engine-Plugin.git/blobdiff - t/methods/base.t
Put all tests into a subdirectory
[perl/modules/re-engine-Plugin.git] / t / methods / base.t
diff --git a/t/methods/base.t b/t/methods/base.t
new file mode 100644 (file)
index 0000000..e939407
--- /dev/null
@@ -0,0 +1,54 @@
+=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";
+}
+