Commit | Line | Data |
8632b6fe |
1 | use strict; |
2 | use warnings; |
5ad574d9 |
3 | use Test::More tests => 6; |
8632b6fe |
4 | |
8632b6fe |
5 | { |
90fe520e |
6 | package MouseClass; |
3a63a2e7 |
7 | use Carp; # import external functions (not our methods) |
90fe520e |
8 | use Mouse; |
8632b6fe |
9 | sub foo { } |
90fe520e |
10 | no Mouse; |
8632b6fe |
11 | } |
12 | { |
90fe520e |
13 | package MouseClassImm; |
3a63a2e7 |
14 | use Carp; # import external functions (not our methods) |
90fe520e |
15 | use Mouse; |
8632b6fe |
16 | sub foo { } |
90fe520e |
17 | no Mouse; |
7efbc77d |
18 | __PACKAGE__->meta->make_immutable(); |
8632b6fe |
19 | } |
20 | { |
90fe520e |
21 | package MouseRole; |
3a63a2e7 |
22 | use Carp; # import external functions (not our methods) |
90fe520e |
23 | use Mouse::Role; |
8632b6fe |
24 | sub bar { } |
90fe520e |
25 | no Mouse::Role; |
8632b6fe |
26 | } |
90fe520e |
27 | { |
28 | package MouseRoleWithoutNoMouseRole; |
29 | use Mouse::Role; |
30 | |
31 | sub baz { } |
32 | # without no Mouse::Role; |
8632b6fe |
33 | } |
90fe520e |
34 | { |
35 | package MouseClassWithRole; |
36 | use Mouse; |
37 | |
38 | with 'MouseRole'; |
39 | no Mouse; |
40 | } |
41 | { |
42 | package MouseClassWithRoles; |
43 | use Mouse; |
44 | |
45 | with qw(MouseRole MouseRoleWithoutNoMouseRole); |
46 | } |
47 | |
48 | is join(',', sort MouseClass->meta->get_method_list()), 'foo,meta', "mutable Mouse"; |
49 | is join(',', sort MouseClassImm->meta->get_method_list()), 'DESTROY,foo,meta,new', "immutable Mouse"; |
50 | |
51 | is join(',', sort MouseRole->meta->get_method_list()), 'bar,meta', "role Mouse"; |
52 | is join(',', sort MouseRoleWithoutNoMouseRole->meta->get_method_list()), |
53 | 'baz,meta', "role Mouse"; |
54 | |
55 | is join(',', sort MouseClassWithRole->meta->get_method_list()), |
56 | 'bar,meta', "Mouse with a role"; |
57 | is join(',', sort MouseClassWithRoles->meta->get_method_list()), |
58 | 'bar,baz,meta', "Mouse with roles"; |
59 | |
8632b6fe |
60 | |