8ef6294781b95b50ddb129938931d60473baa586
[gitmo/Mouse.git] / t / 001_mouse / 063-meta-of-metaclasses.t
1 #!perl
2 use strict;
3 use warnings;
4
5 use Test::More tests => 10;
6
7 {
8     package Class;
9     use Mouse;
10
11     has foo => (is => 'rw');
12
13     __PACKAGE__->meta->make_immutable; # ensure metaclasses loaded
14
15     package Role;
16     use Mouse::Role;
17
18     sub bar {}
19 }
20
21 {
22     my $metaclass = Class->meta;
23
24     can_ok($metaclass, 'meta');
25
26     can_ok($metaclass->constructor_class, 'meta');
27     can_ok($metaclass->destructor_class, 'meta');
28     can_ok($metaclass->attribute_metaclass, 'meta');
29
30     can_ok($metaclass->get_method('foo'),   'meta');
31     can_ok($metaclass->get_attribute('foo'), 'meta');
32     can_ok($metaclass->get_attribute('foo')->accessor_metaclass, 'meta');
33     can_ok($metaclass->get_attribute('foo')->delegation_metaclass, 'meta');
34 }
35
36 {
37     my $metarole = Class->meta;
38
39     can_ok($metarole, 'meta');
40
41     can_ok($metarole->get_method('foo'),   'meta');
42 }