Add a new test for overloading.pm
authorRafael Garcia-Suarez <rgarciasuarez@gmail.com>
Fri, 2 Jan 2009 11:05:59 +0000 (12:05 +0100)
committerDavid Mitchell <davem@iabyn.com>
Mon, 30 Mar 2009 22:26:28 +0000 (23:26 +0100)
This one overloads "cos", which is currently at the end of the
overload table, so we properly test the bitstring stored in %^H

(cherry picked from commit abb619adf81df64d67e76aa14cbb224b1ad99bd6)

lib/overloading.t

index 8121cc8..cedfc51 100644 (file)
@@ -7,7 +7,7 @@ BEGIN {
 
 BEGIN {
     require "./test.pl";
-    plan(tests => 22);
+    plan(tests => 35);
 }
 
 use Scalar::Util qw(refaddr);
@@ -19,6 +19,7 @@ use Scalar::Util qw(refaddr);
        fallback => 1,
        '""' => sub { "foo" },
        '0+' => sub { 42 },
+       cos => sub { "far side of overload table" },
     );
 
     sub new { bless {}, shift };
@@ -28,16 +29,19 @@ my $x = Stringifies->new;
 
 is( "$x", "foo", "stringifies" );
 is( 0 + $x, 42, "numifies" );
+is( cos($x), "far side of overload table", "cosinusfies" );
 
 {
     no overloading;
     is( "$x", overload::StrVal($x), "no stringification" );
     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( 0 + $x, refaddr($x), "no numification" );
+       is( cos($x), cos(refaddr($x)), "no cosinusfication" );
     }
 }
 
@@ -46,37 +50,48 @@ is( 0 + $x, 42, "numifies" );
 
     is( "$x", overload::StrVal($x), "no stringification" );
     is( 0 + $x, 42, "numifies" );
+    is( cos($x), "far side of overload table", "cosinusfies" );
 
     {
        no overloading;
        is( "$x", overload::StrVal($x), "no stringification" );
        is( 0 + $x, refaddr($x), "no numification" );
+       is( cos($x), cos(refaddr($x)), "no cosinusfication" );
     }
 
     use overloading '""';
 
     is( "$x", "foo", "stringifies" );
     is( 0 + $x, 42, "numifies" );
+    is( cos($x), "far side of overload table", "cosinusfies" );
 
     no overloading '0+';
     is( "$x", "foo", "stringifies" );
     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( 0 + $x, refaddr($x), "no numification" );
+       is( cos($x), "far side of overload table", "cosinusfies" );
 
        {
            use overloading;
            is( "$x", "foo", "stringifies" );
            is( 0 + $x, 42, "numifies" );
+           is( cos($x), "far side of overload table", "cosinusfies" );
        }
     }
 
     is( "$x", "foo", "stringifies" );
     is( 0 + $x, refaddr($x), "no numification" );
+    is( cos($x), "far side of overload table", "cosinusfies" );
 
+    no overloading "cos";
+    is( "$x", "foo", "stringifies" );
+    is( 0 + $x, refaddr($x), "no numification" );
+    is( cos($x), cos(refaddr($x)), "no cosinusfication" );
 
     BEGIN { ok(exists($^H{overloading}), "overloading hint present") }