1use strict; 2use warnings; 3 4use Test::More; 5 6BEGIN { 7 package TestParent; 8 use Moo; 9} 10 11BEGIN { 12 package TestClass; 13 use Moo; 14 extends 'TestParent'; 15 16 has attr1 => (is => 'ro'); 17} 18 19BEGIN { 20 ok !TestClass->does('TestRole'), 21 "->does returns false for arbitrary role"; 22 ok !$INC{'Moo/Role.pm'}, 23 "Moo::Role not loaded by does"; 24} 25 26BEGIN { 27 package TestRole; 28 use Moo::Role; 29 30 has attr2 => (is => 'ro'); 31} 32 33BEGIN { 34 package TestClass; 35 with 'TestRole'; 36} 37 38BEGIN { 39 ok +TestClass->does('TestRole'), 40 "->does returns true for composed role"; 41 42 ok +TestClass->DOES('TestRole'), 43 "->DOES returns true for composed role"; 44 45 ok +TestClass->DOES('TestParent'), 46 "->DOES returns true for parent class"; 47} 48 49done_testing; 50