summaryrefslogtreecommitdiff
path: root/t/regexp.t
diff options
context:
space:
mode:
Diffstat (limited to 't/regexp.t')
-rw-r--r--t/regexp.t94
1 files changed, 94 insertions, 0 deletions
diff --git a/t/regexp.t b/t/regexp.t
new file mode 100644
index 0000000..366321a
--- /dev/null
+++ b/t/regexp.t
@@ -0,0 +1,94 @@
+use strict;
+use lib -e 't' ? 't' : 'test';
+use TestYAML tests => 11;
+use YAML();
+no warnings 'once';
+
+my $m_xis = "m-xis";
+my $_xism = "-xism";
+if (qr/x/ =~ /\(\?\^/){
+ $m_xis = "^m";
+ $_xism = "^";
+}
+my @blocks = blocks;
+
+my $block = $blocks[0];
+
+$YAML::UseCode = 1;
+my $hash = YAML::Load($block->yaml);
+is $hash->{key}, "(?$m_xis:foo\$)", 'Regexps load';
+is YAML::Dump(eval $block->perl), <<"...", 'Regexps dump';
+---
+key: !!perl/regexp (?$m_xis:foo\$)
+...
+
+my $re = $hash->{key};
+
+is ref($re), 'Regexp', 'The regexp is a Regexp';
+
+like "Hello\nBarfoo", $re, 'The regexp works';
+
+#-------------------------------------------------------------------------------
+
+$block = $blocks[1];
+
+$hash = YAML::Load($block->yaml);
+is $hash->{key}, "(?$m_xis:foo\$)", 'Regexps load';
+
+# XXX Dumper can't detect a blessed regexp
+
+# is YAML::Dump(eval $block->perl), <<"...", 'Regexps dump';
+# ---
+# key: !!perl/regexp (?$m_xis:foo\$)
+# ...
+
+$re = $hash->{key};
+
+is ref($re), 'Classy', 'The regexp is a Classy :(';
+
+# XXX Test more doesn't think a blessed regexp is a regexp (for like)
+
+# like "Hello\nBarfoo", $re, 'The regexp works';
+ok(("Hello\nBarfoo" =~ $re), 'The regexp works');
+
+#-------------------------------------------------------------------------------
+
+$block = $blocks[2];
+
+$hash = YAML::Load($block->yaml);
+is $hash->{key}, "(?$_xism:foo\$)", 'Regexps load';
+
+is YAML::Dump(eval $block->perl), <<"...", 'Regexps dump';
+---
+key: !!perl/regexp (?$_xism:foo\$)
+...
+
+$re = $hash->{key};
+
+is ref($re), 'Regexp', 'The regexp is a Regexp';
+
+like "Barfoo", $re, 'The regexp works';
+
+
+__END__
+=== A regexp with flag
++++ yaml
+---
+key: !!perl/regexp (?m-xis:foo$)
++++ perl
++{key => qr/foo$/m}
+
+=== A blessed rexexp
++++ yaml
+---
+key: !!perl/regexp:Classy (?m-xis:foo$)
++++ perl
++{key => bless(qr/foo$/m, 'Classy')}
+
+=== A regexp with no flag
++++ yaml
+---
+key: !!perl/regexp (?-xism:foo$)
++++ perl
++{key => qr/foo$/}
+