6 use Test::More tests => 9;
11 use_ok('Class::MOP::Class');
16 The following class hierarhcy is very contrived
17 and totally horrid (it won't work under C3 even),
18 but it tests a number of aspect of this module.
20 A more real-world example would be a nice addition :)
27 sub BUILD { 'Foo::BUILD' }
28 sub foo { 'Foo::foo' }
33 sub BUILD { 'Bar::BUILD' }
34 sub bar { 'Bar::bar' }
39 sub BUILD { 'Baz::BUILD' }
40 sub baz { 'Baz::baz' }
41 sub foo { 'Baz::foo' }
44 our @ISA = ('Foo', 'Bar');
46 sub BUILD { 'Foo::Bar::BUILD' }
47 sub foobar { 'Foo::Bar::foobar' }
49 package Foo::Bar::Baz;
50 our @ISA = ('Foo', 'Bar', 'Baz');
52 sub BUILD { 'Foo::Bar::Baz::BUILD' }
53 sub bar { 'Foo::Bar::Baz::bar' }
54 sub foobarbaz { 'Foo::Bar::Baz::foobarbaz' }
58 [ sort { $a->{name} cmp $b->{name} } Class::MOP::Class->initialize('Foo')->compute_all_applicable_methods() ],
71 '... got the right list of applicable methods for Foo');
74 [ sort { $a->{name} cmp $b->{name} } Class::MOP::Class->initialize('Bar')->compute_all_applicable_methods() ],
92 '... got the right list of applicable methods for Bar');
96 [ sort { $a->{name} cmp $b->{name} } Class::MOP::Class->initialize('Baz')->compute_all_applicable_methods() ],
119 '... got the right list of applicable methods for Baz');
122 [ sort { $a->{name} cmp $b->{name} } Class::MOP::Class->initialize('Foo::Bar')->compute_all_applicable_methods() ],
127 code => \&Foo::Bar::BUILD
142 code => \&Foo::Bar::foobar
145 '... got the right list of applicable methods for Foo::Bar');
148 [ sort { $a->{name} cmp $b->{name} } Class::MOP::Class->initialize('Foo::Bar::Baz')->compute_all_applicable_methods() ],
152 class => 'Foo::Bar::Baz',
153 code => \&Foo::Bar::Baz::BUILD
157 class => 'Foo::Bar::Baz',
158 code => \&Foo::Bar::Baz::bar
172 class => 'Foo::Bar::Baz',
173 code => \&Foo::Bar::Baz::foobarbaz
176 '... got the right list of applicable methods for Foo::Bar::Baz');
178 ## find_all_methods_by_name
181 [ Class::MOP::Class->initialize('Foo::Bar')->find_all_methods_by_name('BUILD') ],
186 code => \&Foo::Bar::BUILD
199 '... got the right list of BUILD methods for Foo::Bar');
202 [ Class::MOP::Class->initialize('Foo::Bar::Baz')->find_all_methods_by_name('BUILD') ],
206 class => 'Foo::Bar::Baz',
207 code => \&Foo::Bar::Baz::BUILD
225 '... got the right list of BUILD methods for Foo::Bar::Baz');