1use strict;
2use warnings;
3use Test::More;
4
5BEGIN {
6  package Local::Role1;
7  use Role::Tiny;
8}
9
10BEGIN {
11  package Local::Role2;
12  use Role::Tiny;
13}
14
15BEGIN {
16  package Local::Class1;
17  use Role::Tiny::With;
18  with qw(
19    Local::Role1
20    Local::Role2
21  );
22}
23
24BEGIN {
25  package Local::Class2;
26  use Role::Tiny::With;
27  with qw( Local::Role1 );
28  with qw( Local::Role2 );
29}
30
31BEGIN {
32  package Local::Class3;
33  use Role::Tiny::With;
34  with qw( Local::Role1 );
35  with qw( Local::Role2 );
36  sub DOES {
37    my ($proto, $role) = @_;
38    return 1 if $role eq 'Local::Role3';
39    return $proto->Role::Tiny::does_role($role);
40  }
41}
42
43for my $c (1 .. 3) {
44  my $class = "Local::Class$c";
45  for my $r (1 .. 2) {
46    my $role = "Local::Role$r";
47    ok($class->does($role), "$class\->does($role)");
48    ok($class->DOES($role), "$class\->DOES($role)");
49  }
50}
51
52{
53  my $class = "Local::Class3";
54  my $role = "Local::Role3";
55  ok( ! $class->does($role), "$class\->does($role)");
56  ok(   $class->DOES($role), "$class\->DOES($role)");
57}
58
59done_testing;
60