Commit | Line | Data |
5d5c86d9 |
1 | #!/usr/bin/perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
08c29211 |
6 | use Test::More; |
5d5c86d9 |
7 | |
08c29211 |
8 | BEGIN { |
9 | eval "use NEXT"; |
10 | plan skip_all => "NEXT required for this test" if $@; |
11 | plan tests => 4; |
5d5c86d9 |
12 | } |
13 | |
14 | { |
15 | package Foo; |
16 | use strict; |
17 | use warnings; |
18 | use Class::C3; |
19 | |
20 | sub foo { 'Foo::foo' } |
21 | |
22 | package Fuz; |
23 | use strict; |
24 | use warnings; |
25 | use Class::C3; |
26 | use base 'Foo'; |
27 | |
28 | sub foo { 'Fuz::foo => ' . (shift)->next::method } |
29 | |
30 | package Bar; |
31 | use strict; |
32 | use warnings; |
33 | use Class::C3; |
34 | use base 'Foo'; |
35 | |
36 | sub foo { 'Bar::foo => ' . (shift)->next::method } |
37 | |
38 | package Baz; |
39 | use strict; |
40 | use warnings; |
08c29211 |
41 | require NEXT; # load this as late as possible so we can catch the test skip |
5d5c86d9 |
42 | |
43 | use base 'Bar', 'Fuz'; |
44 | |
45 | sub foo { 'Baz::foo => ' . (shift)->NEXT::foo } |
46 | } |
47 | |
2ffffc6d |
48 | Class::C3::initialize(); |
49 | |
5d5c86d9 |
50 | is(Foo->foo, 'Foo::foo', '... got the right value from Foo->foo'); |
51 | is(Fuz->foo, 'Fuz::foo => Foo::foo', '... got the right value from Fuz->foo'); |
52 | is(Bar->foo, 'Bar::foo => Foo::foo', '... got the right value from Bar->foo'); |
53 | |
54 | is(Baz->foo, 'Baz::foo => Bar::foo => Fuz::foo => Foo::foo', '... got the right value using NEXT in a subclass of a C3 class'); |
55 | |