c35bba62580c271b559452f4027ef6dfa30ba9d4
[gitmo/Mouse.git] / t-failing / 060_compat / 004_entimwm
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;