X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F001_mouse%2F063-meta-of-metaclasses.t;h=65821952f2ff9089f435528065574ebba0bc3672;hb=e128626c409797822ffd8a4079f833eb3dc0fd37;hp=9aa2e3b61c5cb0a2df6695f45e59fceee87084ce;hpb=b4d1723ead47f05198e369a2d38ba9e4a3a59354;p=gitmo%2FMouse.git diff --git a/t/001_mouse/063-meta-of-metaclasses.t b/t/001_mouse/063-meta-of-metaclasses.t index 9aa2e3b..6582195 100644 --- a/t/001_mouse/063-meta-of-metaclasses.t +++ b/t/001_mouse/063-meta-of-metaclasses.t @@ -2,17 +2,50 @@ use strict; use warnings; -use Test::More tests => 6; +use Test::More tests => 10; -use Mouse (); +{ + package OtherClass; + sub method {} -can_ok('Mouse::Meta::Class', 'meta'); -can_ok('Mouse::Meta::Role', 'meta'); + package Class; + use Mouse; -my $meta = Mouse::Meta::Class->meta; -can_ok($meta->constructor_class, 'meta'); -can_ok($meta->destructor_class, 'meta'); -can_ok($meta->attribute_metaclass, 'meta'); + # this attribute definition is intended to load submodules -can_ok($meta->get_method('is_anon_class'), 'meta'); + 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'); +}