Commit | Line | Data |
1743c026 |
1 | use strict; |
2 | # This is automatically generated by author/import-moose-test.pl. |
3 | # DO NOT EDIT THIS FILE. ANY CHANGES WILL BE LOST!!! |
4 | use t::lib::MooseCompat; |
5 | use warnings; |
6 | use Test::More; |
7 | $TODO = q{Mouse is not yet completed}; |
8 | use Mouse::Meta (); |
9 | |
10 | { |
11 | package My::Role; |
12 | use Mouse::Role; |
13 | } |
14 | |
15 | { |
16 | package SomeClass; |
17 | use Mouse -traits => 'My::Role'; |
18 | } |
19 | |
20 | { |
21 | package SubClassUseBase; |
22 | use base qw/SomeClass/; |
23 | } |
24 | |
25 | { |
26 | package SubSubClassUseBase; |
27 | use Mouse; |
28 | use Test::More; |
29 | $TODO = q{Mouse is not yet completed}; |
30 | use Test::Exception; |
31 | lives_ok { |
32 | extends 'SubClassUseBase'; |
33 | } |
34 | 'Can extend non-Mouse class with parent class that is a Mouse class with a meta role'; |
35 | } |
36 | |
37 | { |
38 | ok( SubSubClassUseBase->meta->meta->can('does_role') |
39 | && SubSubClassUseBase->meta->meta->does_role('My::Role'), |
40 | 'SubSubClassUseBase meta metaclass does the My::Role role' ); |
41 | } |
42 | |
43 | # Note, remove metaclasses of the 'use base' classes after each test, |
44 | # so that they have to be re-initialized - otherwise latter tests |
45 | # would not demonstrate the original issue. |
46 | Mouse::Util::remove_metaclass_by_name('SubClassUseBase'); |
47 | |
48 | { |
49 | package OtherClass; |
50 | use Mouse; |
51 | } |
52 | |
53 | { |
54 | package OtherSubClassUseBase; |
55 | use base 'OtherClass'; |
56 | } |
57 | |
58 | { |
59 | package MultiParent1; |
60 | use Mouse; |
61 | use Test::More; |
62 | $TODO = q{Mouse is not yet completed}; |
63 | use Test::Exception; |
64 | lives_ok { |
65 | extends qw( SubClassUseBase OtherSubClassUseBase ); |
66 | } |
67 | 'Can extend two non-Mouse classes with parents that are different Mouse metaclasses'; |
68 | } |
69 | |
70 | { |
71 | ok( MultiParent1->meta->meta->can('does_role') |
72 | && MultiParent1->meta->meta->does_role('My::Role'), |
73 | 'MultiParent1 meta metaclass does the My::Role role' ); |
74 | } |
75 | |
76 | Mouse::Util::remove_metaclass_by_name($_) |
77 | for qw( SubClassUseBase OtherSubClassUseBase ); |
78 | |
79 | { |
80 | package MultiParent2; |
81 | use Mouse; |
82 | use Test::More; |
83 | $TODO = q{Mouse is not yet completed}; |
84 | use Test::Exception; |
85 | lives_ok { |
86 | extends qw( OtherSubClassUseBase SubClassUseBase ); |
87 | } |
88 | 'Can extend two non-Mouse classes with parents that are different Mouse metaclasses (reverse order)'; |
89 | } |
90 | |
91 | { |
92 | ok( MultiParent2->meta->meta->can('does_role') |
93 | && MultiParent2->meta->meta->does_role('My::Role'), |
94 | 'MultiParent2 meta metaclass does the My::Role role' ); |
95 | } |
96 | |
97 | Mouse::Util::remove_metaclass_by_name($_) |
98 | for qw( SubClassUseBase OtherSubClassUseBase ); |
99 | |
100 | { |
101 | package MultiParent3; |
102 | use Mouse; |
103 | use Test::More; |
104 | $TODO = q{Mouse is not yet completed}; |
105 | use Test::Exception; |
106 | lives_ok { |
107 | extends qw( OtherClass SubClassUseBase ); |
108 | } |
109 | 'Can extend one Mouse class and one non-Mouse class'; |
110 | } |
111 | |
112 | { |
113 | ok( MultiParent3->meta->meta->can('does_role') |
114 | && MultiParent3->meta->meta->does_role('My::Role'), |
115 | 'MultiParent3 meta metaclass does the My::Role role' ); |
116 | } |
117 | |
118 | Mouse::Util::remove_metaclass_by_name($_) |
119 | for qw( SubClassUseBase OtherSubClassUseBase ); |
120 | |
121 | { |
122 | package MultiParent4; |
123 | use Mouse; |
124 | use Test::More; |
125 | $TODO = q{Mouse is not yet completed}; |
126 | use Test::Exception; |
127 | lives_ok { |
128 | extends qw( SubClassUseBase OtherClass ); |
129 | } |
130 | 'Can extend one non-Mouse class and one Mouse class'; |
131 | } |
132 | |
133 | { |
134 | ok( MultiParent4->meta->meta->can('does_role') |
135 | && MultiParent4->meta->meta->does_role('My::Role'), |
136 | 'MultiParent4 meta metaclass does the My::Role role' ); |
137 | } |
138 | |
139 | Mouse::Util::remove_metaclass_by_name($_) |
140 | for qw( SubClassUseBase OtherSubClassUseBase ); |
141 | |
142 | { |
143 | package MultiChild1; |
144 | use Mouse; |
145 | use Test::More; |
146 | $TODO = q{Mouse is not yet completed}; |
147 | use Test::Exception; |
148 | lives_ok { |
149 | extends 'MultiParent1'; |
150 | } |
151 | 'Can extend class that itself extends two non-Mouse classes with Mouse parents'; |
152 | } |
153 | |
154 | { |
155 | ok( MultiChild1->meta->meta->can('does_role') |
156 | && MultiChild1->meta->meta->does_role('My::Role'), |
157 | 'MultiChild1 meta metaclass does the My::Role role' ); |
158 | } |
159 | |
160 | Mouse::Util::remove_metaclass_by_name($_) |
161 | for qw( SubClassUseBase OtherSubClassUseBase ); |
162 | |
163 | { |
164 | package MultiChild2; |
165 | use Mouse; |
166 | use Test::More; |
167 | $TODO = q{Mouse is not yet completed}; |
168 | use Test::Exception; |
169 | lives_ok { |
170 | extends 'MultiParent2'; |
171 | } |
172 | 'Can extend class that itself extends two non-Mouse classes with Mouse parents (reverse order)'; |
173 | } |
174 | |
175 | { |
176 | ok( MultiChild2->meta->meta->can('does_role') |
177 | && MultiChild2->meta->meta->does_role('My::Role'), |
178 | 'MultiChild2 meta metaclass does the My::Role role' ); |
179 | } |
180 | |
181 | Mouse::Util::remove_metaclass_by_name($_) |
182 | for qw( SubClassUseBase OtherSubClassUseBase ); |
183 | |
184 | { |
185 | package MultiChild3; |
186 | use Mouse; |
187 | use Test::More; |
188 | $TODO = q{Mouse is not yet completed}; |
189 | use Test::Exception; |
190 | lives_ok { |
191 | extends 'MultiParent3'; |
192 | } |
193 | 'Can extend class that itself extends one Mouse and one non-Mouse parent'; |
194 | } |
195 | |
196 | { |
197 | ok( MultiChild3->meta->meta->can('does_role') |
198 | && MultiChild3->meta->meta->does_role('My::Role'), |
199 | 'MultiChild3 meta metaclass does the My::Role role' ); |
200 | } |
201 | |
202 | Mouse::Util::remove_metaclass_by_name($_) |
203 | for qw( SubClassUseBase OtherSubClassUseBase ); |
204 | |
205 | { |
206 | package MultiChild4; |
207 | use Mouse; |
208 | use Test::More; |
209 | $TODO = q{Mouse is not yet completed}; |
210 | use Test::Exception; |
211 | lives_ok { |
212 | extends 'MultiParent4'; |
213 | } |
214 | 'Can extend class that itself extends one non-Mouse and one Mouse parent'; |
215 | } |
216 | |
217 | { |
218 | ok( MultiChild4->meta->meta->can('does_role') |
219 | && MultiChild4->meta->meta->does_role('My::Role'), |
220 | 'MultiChild4 meta metaclass does the My::Role role' ); |
221 | } |
222 | |
223 | Mouse::Util::remove_metaclass_by_name($_) |
224 | for qw( SubClassUseBase OtherSubClassUseBase ); |
225 | |
226 | done_testing; |