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