6 use Test::More tests => 6;
10 use_ok('Class::MOP::Class');
30 our @ISA = ('My::B', 'My::C');
34 [ Class::MOP::Class->initialize('My::D')->class_precedence_list ],
35 [ 'My::D', 'My::B', 'My::A', 'My::C', 'My::A' ],
36 '... My::D->meta->class_precedence_list == (D B A C A)');
50 our @ISA = ('My::2::C');
53 our @ISA = ('My::2::A');
56 our @ISA = ('My::2::B');
59 eval { Class::MOP::Class->initialize('My::2::B')->class_precedence_list };
60 ok($@, '... recursive inheritance breaks correctly :)');
76 our @ISA = ('My::3::A');
78 our @ISA = ('My::3::A', 'My::3::B');
80 our @ISA = ('My::3::B', 'My::3::C');
84 [ Class::MOP::Class->initialize('My::3::D')->class_precedence_list ],
85 [ 'My::3::D', 'My::3::B', 'My::3::A', 'My::3::C', 'My::3::A', 'My::3::B', 'My::3::A' ],
86 '... My::3::D->meta->class_precedence_list == (D B A C A B A)');
90 Test all the class_precedence_lists
91 using Perl's own dispatcher to check
96 my @CLASS_PRECEDENCE_LIST;
101 sub CPL { push @CLASS_PRECEDENCE_LIST => 'Foo' }
107 push @CLASS_PRECEDENCE_LIST => 'Bar';
115 push @CLASS_PRECEDENCE_LIST => 'Baz';
123 push @CLASS_PRECEDENCE_LIST => 'Foo::Bar';
127 package Foo::Bar::Baz;
128 our @ISA = ('Foo::Bar');
131 push @CLASS_PRECEDENCE_LIST => 'Foo::Bar::Baz';
137 Foo::Bar::Baz->CPL();
140 [ Class::MOP::Class->initialize('Foo::Bar::Baz')->class_precedence_list ],
141 [ @CLASS_PRECEDENCE_LIST ],
142 '... Foo::Bar::Baz->meta->class_precedence_list == @CLASS_PRECEDENCE_LIST');