fix broken gotos for Catalyst::Plugin::C3, added slightly modified next::method tests...
[gitmo/Class-C3-XS.git] / t / 36_next_goto.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 5;
7
8 BEGIN { use_ok('Class::C3::XS') }
9
10 {
11     package Proxy;
12     our @ISA = qw//;
13     sub next_proxy { goto &next::method }
14     sub maybe_proxy { goto &maybe::next::method }
15     sub can_proxy { goto &next::can }
16
17     package TBase;
18     our @ISA = qw//;
19     sub foo { 42 }
20     sub bar { 24 }
21     # baz doesn't exist intentionally
22     sub quux { 242 }
23
24     package TTop;
25     our @ISA = qw/TBase/;
26     sub foo { shift->Proxy::next_proxy() }
27     sub bar { shift->Proxy::maybe_proxy() }
28     sub baz { shift->Proxy::maybe_proxy() }
29     sub quux { shift->Proxy::can_proxy()->() }
30 }
31
32 is(TTop->foo, 42, 'proxy next::method via goto');
33 is(TTop->bar, 24, 'proxy maybe::next::method via goto');
34 is(TTop->baz, undef, 'proxy maybe::next::method via goto with no method');
35 is(TTop->quux, 242, 'proxy next::can via goto');