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