6 use Test::More tests => 6;
29 our @ISA = ('My::B', 'My::C');
33 [ My::D->meta->class_precedence_list ],
34 [ 'My::D', 'My::B', 'My::A', 'My::C', 'My::A' ],
35 '... My::D->meta->class_precedence_list == (D B A C A)');
38 [ My::D->meta->linearized_isa ],
39 [ 'My::D', 'My::B', 'My::A', 'My::C' ],
40 '... My::D->meta->linearized_isa == (D B A C)');
52 # 5.9.5+ dies at the moment of
53 # recursive @ISA definition, not later when
54 # you try to use the @ISAs.
59 our @ISA = ('My::2::C');
62 our @ISA = ('My::2::A');
65 our @ISA = ('My::2::B');
68 My::2::B->meta->class_precedence_list
70 ok($@, '... recursive inheritance breaks correctly :)');
87 our @ISA = ('My::3::A');
89 our @ISA = ('My::3::A', 'My::3::B');
91 our @ISA = ('My::3::B', 'My::3::C');
95 [ My::3::D->meta->class_precedence_list ],
96 [ 'My::3::D', 'My::3::B', 'My::3::A', 'My::3::C', 'My::3::A', 'My::3::B', 'My::3::A' ],
97 '... My::3::D->meta->class_precedence_list == (D B A C A B A)');
100 [ My::3::D->meta->linearized_isa ],
101 [ 'My::3::D', 'My::3::B', 'My::3::A', 'My::3::C' ],
102 '... My::3::D->meta->linearized_isa == (D B A C B)');
106 Test all the class_precedence_lists
107 using Perl's own dispatcher to check
112 my @CLASS_PRECEDENCE_LIST;
118 sub CPL { push @CLASS_PRECEDENCE_LIST => 'Foo' }
124 push @CLASS_PRECEDENCE_LIST => 'Bar';
133 push @CLASS_PRECEDENCE_LIST => 'Baz';
141 push @CLASS_PRECEDENCE_LIST => 'Foo::Bar';
145 package Foo::Bar::Baz;
146 our @ISA = ('Foo::Bar');
149 push @CLASS_PRECEDENCE_LIST => 'Foo::Bar::Baz';
155 Foo::Bar::Baz->CPL();
158 [ Foo::Bar::Baz->meta->class_precedence_list ],
159 [ @CLASS_PRECEDENCE_LIST ],
160 '... Foo::Bar::Baz->meta->class_precedence_list == @CLASS_PRECEDENCE_LIST');