This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
B/Deparse.pm: Rework deparsing of UTF-8 tr///
[perl5.git] / lib / overloading.t
index 2e1fb40..85fc7e2 100644 (file)
@@ -1,6 +1,6 @@
 #./perl
 
-use Test::More tests => 35;
+use Test::More tests => 50;
 
 use Scalar::Util qw(refaddr);
 
@@ -18,20 +18,25 @@ use Scalar::Util qw(refaddr);
 }
 
 my $x = Stringifies->new;
+my $y = qr//;
+my $ystr = "$y";
 
 is( "$x", "foo", "stringifies" );
+is( "$y", $ystr, "stringifies qr//" );
 is( 0 + $x, 42, "numifies" );
 is( cos($x), "far side of overload table", "cosinusfies" );
 
 {
     no overloading;
     is( "$x", overload::StrVal($x), "no stringification" );
+    is( "$y", overload::StrVal($y), "no stringification of qr//" );
     is( 0 + $x, refaddr($x), "no numification" );
     is( cos($x), cos(refaddr($x)), "no cosinusfication" );
 
     {
        no overloading '""';
        is( "$x", overload::StrVal($x), "no stringification" );
+       is( "$y", overload::StrVal($y), "no stringification of qr//" );
        is( 0 + $x, refaddr($x), "no numification" );
        is( cos($x), cos(refaddr($x)), "no cosinusfication" );
     }
@@ -41,12 +46,24 @@ is( cos($x), "far side of overload table", "cosinusfies" );
     no overloading '""';
 
     is( "$x", overload::StrVal($x), "no stringification" );
+    is( "$y", overload::StrVal($y), "no stringification of qr//" );
     is( 0 + $x, 42, "numifies" );
     is( cos($x), "far side of overload table", "cosinusfies" );
 
+    my $q = qr/abc/;
+    ok "abc" =~ $q, '=~ qr// with no "" overloading';
+    ok "abcd" =~ /${q}d/, '=~ /foo$qr/ with no "" overloading';
+    {
+       no overloading 'qr';
+       my $q = qr/abc/;
+       ok "abc" =~ $q, '=~ qr// with no "" or qr overloading';
+       ok "abcd" =~ /${q}d/, '=~ /foo$qr/ with no "" or qr overloading';
+    }
+
     {
        no overloading;
        is( "$x", overload::StrVal($x), "no stringification" );
+       is( "$y", overload::StrVal($y), "no stringification of qr//" );
        is( 0 + $x, refaddr($x), "no numification" );
        is( cos($x), cos(refaddr($x)), "no cosinusfication" );
     }
@@ -54,34 +71,40 @@ is( cos($x), "far side of overload table", "cosinusfies" );
     use overloading '""';
 
     is( "$x", "foo", "stringifies" );
+    is( "$y", $ystr, "stringifies qr//" );
     is( 0 + $x, 42, "numifies" );
     is( cos($x), "far side of overload table", "cosinusfies" );
 
     no overloading '0+';
     is( "$x", "foo", "stringifies" );
+    is( "$y", $ystr, "stringifies qr//" );
     is( 0 + $x, refaddr($x), "no numification" );
     is( cos($x), "far side of overload table", "cosinusfies" );
 
     {
        no overloading '""';
        is( "$x", overload::StrVal($x), "no stringification" );
+       is( "$y", overload::StrVal($y), "no stringification of qr//" );
        is( 0 + $x, refaddr($x), "no numification" );
        is( cos($x), "far side of overload table", "cosinusfies" );
 
        {
            use overloading;
            is( "$x", "foo", "stringifies" );
+           is( "$y", $ystr, "stringifies qr//" );
            is( 0 + $x, 42, "numifies" );
            is( cos($x), "far side of overload table", "cosinusfies" );
        }
     }
 
     is( "$x", "foo", "stringifies" );
+    is( "$y", $ystr, "stringifies qr//" );
     is( 0 + $x, refaddr($x), "no numification" );
     is( cos($x), "far side of overload table", "cosinusfies" );
 
     no overloading "cos";
     is( "$x", "foo", "stringifies" );
+    is( "$y", $ystr, "stringifies qr//" );
     is( 0 + $x, refaddr($x), "no numification" );
     is( cos($x), cos(refaddr($x)), "no cosinusfication" );