trAvis - MANAGER
Edit File: 063-meta-of-metaclasses.t
#!/usr/bin/perl use strict; use warnings; use Test::More tests => 10; { package OtherClass; sub method {} package Class; use Mouse; # this attribute definition is intended to load submodules has foo => ( is => 'rw', isa => 'OtherClass', handles => qr/./, ); __PACKAGE__->meta->make_immutable; # ensure metaclasses loaded package Role; use Mouse::Role; sub bar {} } { my $metaclass = Class->meta; can_ok($metaclass, 'meta'); can_ok($metaclass->constructor_class, 'meta'); can_ok($metaclass->destructor_class, 'meta'); can_ok($metaclass->attribute_metaclass, 'meta'); can_ok($metaclass->get_method('foo'), 'meta'); can_ok($metaclass->get_attribute('foo'), 'meta'); can_ok($metaclass->get_attribute('foo')->accessor_metaclass, 'meta'); can_ok($metaclass->get_attribute('foo')->delegation_metaclass, 'meta'); } { my $metarole = Class->meta; can_ok($metarole, 'meta'); can_ok($metarole->get_method('foo'), 'meta'); }