Skip tests for strict constructor on Moose
[gitmo/Mouse.git] / t / 001_mouse / 063-meta-of-metaclasses.t
CommitLineData
b4d1723e 1#!perl
2use strict;
3use warnings;
4
3821b191 5use 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}