3 use Test::More tests => 35;
5 use Scalar::Util qw(refaddr);
12 '""' => sub { "foo" },
14 cos => sub { "far side of overload table" },
17 sub new { bless {}, shift };
20 my $x = Stringifies->new;
22 is( "$x", "foo", "stringifies" );
23 is( 0 + $x, 42, "numifies" );
24 is( cos($x), "far side of overload table", "cosinusfies" );
28 is( "$x", overload::StrVal($x), "no stringification" );
29 is( 0 + $x, refaddr($x), "no numification" );
30 is( cos($x), cos(refaddr($x)), "no cosinusfication" );
34 is( "$x", overload::StrVal($x), "no stringification" );
35 is( 0 + $x, refaddr($x), "no numification" );
36 is( cos($x), cos(refaddr($x)), "no cosinusfication" );
43 is( "$x", overload::StrVal($x), "no stringification" );
44 is( 0 + $x, 42, "numifies" );
45 is( cos($x), "far side of overload table", "cosinusfies" );
49 is( "$x", overload::StrVal($x), "no stringification" );
50 is( 0 + $x, refaddr($x), "no numification" );
51 is( cos($x), cos(refaddr($x)), "no cosinusfication" );
56 is( "$x", "foo", "stringifies" );
57 is( 0 + $x, 42, "numifies" );
58 is( cos($x), "far side of overload table", "cosinusfies" );
61 is( "$x", "foo", "stringifies" );
62 is( 0 + $x, refaddr($x), "no numification" );
63 is( cos($x), "far side of overload table", "cosinusfies" );
67 is( "$x", overload::StrVal($x), "no stringification" );
68 is( 0 + $x, refaddr($x), "no numification" );
69 is( cos($x), "far side of overload table", "cosinusfies" );
73 is( "$x", "foo", "stringifies" );
74 is( 0 + $x, 42, "numifies" );
75 is( cos($x), "far side of overload table", "cosinusfies" );
79 is( "$x", "foo", "stringifies" );
80 is( 0 + $x, refaddr($x), "no numification" );
81 is( cos($x), "far side of overload table", "cosinusfies" );
84 is( "$x", "foo", "stringifies" );
85 is( 0 + $x, refaddr($x), "no numification" );
86 is( cos($x), cos(refaddr($x)), "no cosinusfication" );
88 BEGIN { ok(exists($^H{overloading}), "overloading hint present") }
92 BEGIN { ok(!exists($^H{overloading}), "overloading hint removed") }