diff options
Diffstat (limited to 't/mro/overload_c3.t')
-rw-r--r-- | t/mro/overload_c3.t | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/t/mro/overload_c3.t b/t/mro/overload_c3.t new file mode 100644 index 0000000000..e227dcdbd8 --- /dev/null +++ b/t/mro/overload_c3.t @@ -0,0 +1,54 @@ +#!./perl + +use strict; +use warnings; +BEGIN { + unless (-d 'blib') { + chdir 't' if -d 't'; + @INC = '../lib'; + } +} + +use Test::More tests => 7; + +{ + package BaseTest; + use strict; + use warnings; + use mro 'c3'; + + package OverloadingTest; + use strict; + use warnings; + use mro 'c3'; + use base 'BaseTest'; + use overload '""' => sub { ref(shift) . " stringified" }, + fallback => 1; + + sub new { bless {} => shift } + + package InheritingFromOverloadedTest; + use strict; + use warnings; + use base 'OverloadingTest'; + use mro 'c3'; +} + +my $x = InheritingFromOverloadedTest->new(); +isa_ok($x, 'InheritingFromOverloadedTest'); + +my $y = OverloadingTest->new(); +isa_ok($y, 'OverloadingTest'); + +is("$x", 'InheritingFromOverloadedTest stringified', '... got the right value when stringifing'); +is("$y", 'OverloadingTest stringified', '... got the right value when stringifing'); + +ok(($y eq 'OverloadingTest stringified'), '... eq was handled correctly'); + +my $result; +eval { + $result = $x eq 'InheritingFromOverloadedTest stringified' +}; +ok(!$@, '... this should not throw an exception'); +ok($result, '... and we should get the true value'); + |