use strict;
use warnings;
use Test::More tests => 6;
{
package MouseClass;
use Carp; # import external functions (not our methods)
use Mouse;
sub foo { }
no Mouse;
}
{
package MouseClassImm;
use Carp; # import external functions (not our methods)
use Mouse;
sub foo { }
no Mouse;
__PACKAGE__->meta->make_immutable();
}
{
package MouseRole;
use Carp; # import external functions (not our methods)
use Mouse::Role;
sub bar { }
no Mouse::Role;
}
{
package MouseRoleWithoutNoMouseRole;
use Mouse::Role;
sub baz { }
# without no Mouse::Role;
}
{
package MouseClassWithRole;
use Mouse;
with 'MouseRole';
no Mouse;
}
{
package MouseClassWithRoles;
use Mouse;
with qw(MouseRole MouseRoleWithoutNoMouseRole);
}
is join(',', sort MouseClass->meta->get_method_list()), 'foo,meta', "mutable Mouse";
is join(',', sort MouseClassImm->meta->get_method_list()), 'DESTROY,foo,meta,new', "immutable Mouse";
is join(',', sort MouseRole->meta->get_method_list()), 'bar,meta', "role Mouse";
is join(',', sort MouseRoleWithoutNoMouseRole->meta->get_method_list()),
'baz,meta', "role Mouse";
is join(',', sort MouseClassWithRole->meta->get_method_list()),
'bar,meta', "Mouse with a role";
is join(',', sort MouseClassWithRoles->meta->get_method_list()),
'bar,baz,meta', "Mouse with roles";