use strict;
use warnings;
-use Test::More tests => 6;
+use Test::More tests => 10;
-use Mouse ();
+{
+ package Class;
+ use Mouse;
-can_ok('Mouse::Meta::Class', 'meta');
-can_ok('Mouse::Meta::Role', 'meta');
+ has foo => (is => 'rw');
-my $meta = Mouse::Meta::Class->meta;
-can_ok($meta->constructor_class, 'meta');
-can_ok($meta->destructor_class, 'meta');
-can_ok($meta->attribute_metaclass, 'meta');
+ __PACKAGE__->meta->make_immutable; # ensure metaclasses loaded
-can_ok($meta->get_method('is_anon_class'), 'meta');
+ 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');
+}