Commit | Line | Data |
b4d1723e |
1 | #!perl |
2 | use strict; |
3 | use warnings; |
4 | |
3821b191 |
5 | use Test::More tests => 10; |
b4d1723e |
6 | |
3821b191 |
7 | { |
feaa7084 |
8 | package OtherClass; |
9 | sub method {} |
10 | |
3821b191 |
11 | package Class; |
12 | use Mouse; |
b4d1723e |
13 | |
feaa7084 |
14 | # this attribute definition is intended to load submodules |
15 | |
16 | has foo => ( |
17 | is => 'rw', |
18 | isa => 'OtherClass', |
19 | handles => qr/./, |
20 | ); |
b4d1723e |
21 | |
3821b191 |
22 | __PACKAGE__->meta->make_immutable; # ensure metaclasses loaded |
b4d1723e |
23 | |
3821b191 |
24 | package Role; |
25 | use Mouse::Role; |
b4d1723e |
26 | |
3821b191 |
27 | sub bar {} |
28 | } |
29 | |
30 | { |
31 | my $metaclass = Class->meta; |
32 | |
33 | can_ok($metaclass, 'meta'); |
34 | |
35 | can_ok($metaclass->constructor_class, 'meta'); |
36 | can_ok($metaclass->destructor_class, 'meta'); |
37 | can_ok($metaclass->attribute_metaclass, 'meta'); |
38 | |
39 | can_ok($metaclass->get_method('foo'), 'meta'); |
40 | can_ok($metaclass->get_attribute('foo'), 'meta'); |
41 | can_ok($metaclass->get_attribute('foo')->accessor_metaclass, 'meta'); |
42 | can_ok($metaclass->get_attribute('foo')->delegation_metaclass, 'meta'); |
43 | } |
44 | |
45 | { |
46 | my $metarole = Class->meta; |
47 | |
48 | can_ok($metarole, 'meta'); |
49 | |
50 | can_ok($metarole->get_method('foo'), 'meta'); |
51 | } |