3 use Test::More tests => 18;
12 use Moose -traits => 'My::Role';
16 package SubClassUseBase;
17 use base qw/SomeClass/;
21 package SubSubClassUseBase;
26 extends 'SubClassUseBase';
28 'Can extend non-Moose class with parent class that is a Moose class with a meta role';
32 ok( SubSubClassUseBase->meta->meta->can('does_role')
33 && SubSubClassUseBase->meta->meta->does_role('My::Role'),
34 'SubSubClassUseBase meta metaclass does the My::Role role' );
43 package OtherSubClassUseBase;
44 use base 'OtherClass';
53 extends qw( SubClassUseBase OtherSubClassUseBase );
55 'Can extend two non-Moose classes with parents that are different Moose metaclasses';
59 ok( MultiParent1->meta->meta->can('does_role')
60 && MultiParent1->meta->meta->does_role('My::Role'),
61 'MultiParent1 meta metaclass does the My::Role role' );
70 extends qw( OtherSubClassUseBase SubClassUseBase );
72 'Can extend two non-Moose classes with parents that are different Moose metaclasses (reverse order)';
76 ok( MultiParent2->meta->meta->can('does_role')
77 && MultiParent2->meta->meta->does_role('My::Role'),
78 'MultiParent2 meta metaclass does the My::Role role' );
87 extends qw( OtherClass SubClassUseBase );
89 'Can extend one Moose class and one non-Moose class';
93 ok( MultiParent3->meta->meta->can('does_role')
94 && MultiParent3->meta->meta->does_role('My::Role'),
95 'MultiParent3 meta metaclass does the My::Role role' );
104 extends qw( SubClassUseBase OtherClass );
106 'Can extend one non-Moose class and one Moose class';
110 ok( MultiParent4->meta->meta->can('does_role')
111 && MultiParent4->meta->meta->does_role('My::Role'),
112 'MultiParent4 meta metaclass does the My::Role role' );
121 extends 'MultiParent1';
123 'Can extend class that itself extends two non-Moose classes with Moose parents';
127 ok( MultiChild1->meta->meta->can('does_role')
128 && MultiChild1->meta->meta->does_role('My::Role'),
129 'MultiChild1 meta metaclass does the My::Role role' );
138 extends 'MultiParent2';
140 'Can extend class that itself extends two non-Moose classes with Moose parents (reverse order)';
144 ok( MultiChild2->meta->meta->can('does_role')
145 && MultiChild2->meta->meta->does_role('My::Role'),
146 'MultiChild2 meta metaclass does the My::Role role' );
155 extends 'MultiParent3';
157 'Can extend class that itself extends one Moose and one non-Moose parent';
161 ok( MultiChild3->meta->meta->can('does_role')
162 && MultiChild3->meta->meta->does_role('My::Role'),
163 'MultiChild3 meta metaclass does the My::Role role' );
172 extends 'MultiParent4';
174 'Can extend class that itself extends one non-Moose and one Moose parent';
178 ok( MultiChild4->meta->meta->can('does_role')
179 && MultiChild4->meta->meta->does_role('My::Role'),
180 'MultiChild4 meta metaclass does the My::Role role' );