Blame t/regexp.t

Packit 61a564
use strict;
Packit 61a564
use warnings;
Packit 61a564
use lib 't/lib';
Packit 61a564
Packit 61a564
use Std;
Packit 61a564
my $xism = qr/x/=~/\(\?\^/ ? "^" : "-xism";
Packit 61a564
{
Packit 61a564
  my $str = "ferg";
Packit 61a564
  my $re = qr/$str/;
Packit 61a564
  check_test(
Packit 61a564
    sub {
Packit 61a564
      cmp_deeply("fergal", re($re));
Packit 61a564
    },
Packit 61a564
    {
Packit 61a564
      actual_ok => 1,
Packit 61a564
      diag => "",
Packit 61a564
    },
Packit 61a564
    "re eq"
Packit 61a564
  );
Packit 61a564
Packit 61a564
  check_test(
Packit 61a564
    sub {
Packit 61a564
      cmp_deeply("fergal", regexponly($re));
Packit 61a564
    },
Packit 61a564
    {
Packit 61a564
      actual_ok => 1,
Packit 61a564
      diag => "",
Packit 61a564
    },
Packit 61a564
    "regexponly eq"
Packit 61a564
  );
Packit 61a564
Packit 61a564
  check_test(
Packit 61a564
    sub {
Packit 61a564
      cmp_deeply("feargal", re($re));
Packit 61a564
    },
Packit 61a564
    {
Packit 61a564
      actual_ok => 0,
Packit 61a564
      diag => <
Packit 61a564
Using Regexp on \$data
Packit 61a564
   got : 'feargal'
Packit 61a564
expect : $re
Packit 61a564
EOM
Packit 61a564
    },
Packit 61a564
    "re not eq"
Packit 61a564
  );
Packit 61a564
Packit 61a564
  check_test(
Packit 61a564
    sub {
Packit 61a564
      cmp_deeply("feargal", regexponly($re));
Packit 61a564
    },
Packit 61a564
    {
Packit 61a564
      actual_ok => 0,
Packit 61a564
      diag => <
Packit 61a564
Using Regexp on \$data
Packit 61a564
   got : 'feargal'
Packit 61a564
expect : $re
Packit 61a564
EOM
Packit 61a564
    },
Packit 61a564
    "regexponly not eq"
Packit 61a564
  );
Packit 61a564
Packit 61a564
Packit 61a564
  check_test(
Packit 61a564
    sub {
Packit 61a564
      cmp_deeply("fergal", re($str));
Packit 61a564
    },
Packit 61a564
    {
Packit 61a564
      actual_ok => 1,
Packit 61a564
      diag => "",
Packit 61a564
    },
Packit 61a564
    "string re eq"
Packit 61a564
  );
Packit 61a564
Packit 61a564
  check_test(
Packit 61a564
    sub {
Packit 61a564
      cmp_deeply("feargal", re($str));
Packit 61a564
    },
Packit 61a564
    {
Packit 61a564
      actual_ok => 0,
Packit 61a564
      diag => <
Packit 61a564
Using Regexp on \$data
Packit 61a564
   got : 'feargal'
Packit 61a564
expect : $re
Packit 61a564
EOM
Packit 61a564
    },
Packit 61a564
    "string runre not eq"
Packit 61a564
  );
Packit 61a564
}
Packit 61a564
{
Packit 61a564
  my $re = qr/([ac])/;
Packit 61a564
  check_test(
Packit 61a564
    sub {
Packit 61a564
      cmp_deeply("abc", re($re, [qw( a )]));
Packit 61a564
    },
Packit 61a564
    {
Packit 61a564
      actual_ok => 1,
Packit 61a564
      diag => "",
Packit 61a564
    },
Packit 61a564
    "matches re eq"
Packit 61a564
  );
Packit 61a564
Packit 61a564
  check_test(
Packit 61a564
    sub {
Packit 61a564
      cmp_deeply("abc", re($re, [qw( a c )], "g"));
Packit 61a564
    },
Packit 61a564
    {
Packit 61a564
      actual_ok => 1,
Packit 61a564
      diag => "",
Packit 61a564
    },
Packit 61a564
    "matches global re eq"
Packit 61a564
  );
Packit 61a564
Packit 61a564
  check_test(
Packit 61a564
    sub {
Packit 61a564
      cmp_deeply("abc", re($re, [qw( a b )], "g"));
Packit 61a564
    },
Packit 61a564
    {
Packit 61a564
      actual_ok => 0,
Packit 61a564
      diag => <
Packit 61a564
Compared [\$data =~ (?$xism:([ac]))]->[1]
Packit 61a564
   got : 'c'
Packit 61a564
expect : 'b'
Packit 61a564
EOM
Packit 61a564
    },
Packit 61a564
    "matches global not eq"
Packit 61a564
  );
Packit 61a564
Packit 61a564
}
Packit 61a564
Packit 61a564
{
Packit 61a564
  my $re = qr/(..)/;
Packit 61a564
  check_test(
Packit 61a564
    sub {
Packit 61a564
      cmp_deeply("abababcdcdefef", re($re, set(qw( ab cd ef )), "g"));
Packit 61a564
    },
Packit 61a564
    {
Packit 61a564
      actual_ok => 1,
Packit 61a564
      diag => "",
Packit 61a564
    },
Packit 61a564
    "matches re and set eq"
Packit 61a564
  );
Packit 61a564
Packit 61a564
  check_test(
Packit 61a564
    sub {
Packit 61a564
      cmp_deeply("cat=2,dog=67,sheep=3,goat=2,dog=5",
Packit 61a564
          re(qr/(\D+)=\d+,?/, set(qw( cat sheep dog )), "g"))
Packit 61a564
    },
Packit 61a564
    {
Packit 61a564
      actual_ok => 0,
Packit 61a564
      diag => <
Packit 61a564
Comparing [\$data =~ (?$xism:(\\D+)=\\d+,?)] as a Set
Packit 61a564
Extra: 'goat'
Packit 61a564
EOM
Packit 61a564
    },
Packit 61a564
    "string runre not eq"
Packit 61a564
  );
Packit 61a564
Packit 61a564
}
Packit 61a564
Packit 61a564
{
Packit 61a564
  require Over;
Packit 61a564
  my $o = Over->new("hi mom");
Packit 61a564
Packit 61a564
  is("$o", "hi mom", "we make a stringifiable object");
Packit 61a564
Packit 61a564
  check_test(
Packit 61a564
    sub { cmp_deeply($o, re(qr/mom/)); },
Packit 61a564
    { actual_ok => 1 },
Packit 61a564
    "re() tests objects via overloading",
Packit 61a564
  );
Packit 61a564
Packit 61a564
  # Remember, Regexp stringification changes over time. -- rjbs, 2016-09-08
Packit 61a564
  my $re     = qr/dad/;
Packit 61a564
  my $re_str = "$re";
Packit 61a564
  check_test(
Packit 61a564
    sub { cmp_deeply($o, re($re)); },
Packit 61a564
    {
Packit 61a564
      actual_ok => 0,
Packit 61a564
      diag => <
Packit 61a564
Using Regexp on \$data
Packit 61a564
   got : 'hi mom' (instance of Over)
Packit 61a564
expect : $re_str
Packit 61a564
EOM
Packit 61a564
    },
Packit 61a564
    "re() tests objects via overloading",
Packit 61a564
  );
Packit 61a564
}