use strict; use warnings; use Test::More; BEGIN { use_ok('Moose::Util'); } { package Moosey::Class; use Moose; } { package Moosey::Role; use Moose::Role; } { package Other; } { package Moosey::Composed; use Moose; with 'Moosey::Role'; } use Moose::Util 'is_role'; { my $class = Moosey::Class->new; my $composed = Moosey::Composed->new; ok(!is_role('Moosey::Class'), 'a moose class is not a role'); ok(is_role('Moosey::Role'), 'a moose role is a role'); ok(!is_role('Other'), 'something else is not a role'); ok(!is_role('DoesNotExist'), 'non-existent namespace is not a role'); ok(!is_role('Moosey::Composed'), 'a moose class that composes a role is not a role'); ok(!is_role($class), 'instantiated moose object is not a role'); ok(!is_role($composed), 'instantiated moose object that does a role is not a role'); } done_testing;