6 use Test::More tests => 8;
10 use_ok('Class::MOP::Class');
31 our @ISA = ('My::B', 'My::C');
35 [ My::D->meta->class_precedence_list ],
36 [ 'My::D', 'My::B', 'My::A', 'My::C', 'My::A' ],
37 '... My::D->meta->class_precedence_list == (D B A C A)');
40 [ My::D->meta->linearized_isa ],
41 [ 'My::D', 'My::B', 'My::A', 'My::C' ],
42 '... My::D->meta->linearized_isa == (D B A C)');
54 # 5.9.5+ dies at the moment of
55 # recursive @ISA definition, not later when
56 # you try to use the @ISAs.
61 our @ISA = ('My::2::C');
64 our @ISA = ('My::2::A');
67 our @ISA = ('My::2::B');
70 My::2::B->meta->class_precedence_list
72 ok($@, '... recursive inheritance breaks correctly :)');
89 our @ISA = ('My::3::A');
91 our @ISA = ('My::3::A', 'My::3::B');
93 our @ISA = ('My::3::B', 'My::3::C');
97 [ My::3::D->meta->class_precedence_list ],
98 [ 'My::3::D', 'My::3::B', 'My::3::A', 'My::3::C', 'My::3::A', 'My::3::B', 'My::3::A' ],
99 '... My::3::D->meta->class_precedence_list == (D B A C A B A)');
102 [ My::3::D->meta->linearized_isa ],
103 [ 'My::3::D', 'My::3::B', 'My::3::A', 'My::3::C' ],
104 '... My::3::D->meta->linearized_isa == (D B A C B)');
108 Test all the class_precedence_lists
109 using Perl's own dispatcher to check
114 my @CLASS_PRECEDENCE_LIST;
120 sub CPL { push @CLASS_PRECEDENCE_LIST => 'Foo' }
126 push @CLASS_PRECEDENCE_LIST => 'Bar';
135 push @CLASS_PRECEDENCE_LIST => 'Baz';
143 push @CLASS_PRECEDENCE_LIST => 'Foo::Bar';
147 package Foo::Bar::Baz;
148 our @ISA = ('Foo::Bar');
151 push @CLASS_PRECEDENCE_LIST => 'Foo::Bar::Baz';
157 Foo::Bar::Baz->CPL();
160 [ Foo::Bar::Baz->meta->class_precedence_list ],
161 [ @CLASS_PRECEDENCE_LIST ],
162 '... Foo::Bar::Baz->meta->class_precedence_list == @CLASS_PRECEDENCE_LIST');