6 use Test::More tests => 6;
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)');
52 our @ISA = ('My::2::C');
55 our @ISA = ('My::2::A');
58 our @ISA = ('My::2::B');
61 eval { My::2::B->meta->class_precedence_list };
62 ok($@, '... recursive inheritance breaks correctly :)');
79 our @ISA = ('My::3::A');
81 our @ISA = ('My::3::A', 'My::3::B');
83 our @ISA = ('My::3::B', 'My::3::C');
87 [ My::3::D->meta->class_precedence_list ],
88 [ 'My::3::D', 'My::3::B', 'My::3::A', 'My::3::C', 'My::3::A', 'My::3::B', 'My::3::A' ],
89 '... My::3::D->meta->class_precedence_list == (D B A C A B A)');
93 Test all the class_precedence_lists
94 using Perl's own dispatcher to check
99 my @CLASS_PRECEDENCE_LIST;
105 sub CPL { push @CLASS_PRECEDENCE_LIST => 'Foo' }
111 push @CLASS_PRECEDENCE_LIST => 'Bar';
120 push @CLASS_PRECEDENCE_LIST => 'Baz';
128 push @CLASS_PRECEDENCE_LIST => 'Foo::Bar';
132 package Foo::Bar::Baz;
133 our @ISA = ('Foo::Bar');
136 push @CLASS_PRECEDENCE_LIST => 'Foo::Bar::Baz';
142 Foo::Bar::Baz->CPL();
145 [ Foo::Bar::Baz->meta->class_precedence_list ],
146 [ @CLASS_PRECEDENCE_LIST ],
147 '... Foo::Bar::Baz->meta->class_precedence_list == @CLASS_PRECEDENCE_LIST');