diff options
Diffstat (limited to 't/regexp.t')
-rw-r--r-- | t/regexp.t | 94 |
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$/} + |