1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
|
use strictures 1;
use Test::More;
BEGIN {
package Ker;
use Moo::Role;
sub has_ker {}
}
BEGIN {
package Splat;
use Moose::Role;
requires 'monkey';
sub punch { 1 }
sub jab { 0 }
around monkey => sub { 'OW' };
has trap => (is => 'ro', default => sub { -1 });
sub has_splat {}
}
BEGIN {
package KerSplat;
use Moo::Role;
with qw/
Ker
Splat
/;
}
BEGIN {
package Splat2;
use Mouse::Role;
requires 'monkey';
sub punch { 1 }
sub jab { 0 }
around monkey => sub { 'OW' };
has trap => (is => 'ro', default => sub { -1 });
sub has_splat {}
}
BEGIN {
package KerSplat2;
use Moo::Role;
with qw/
Ker
Splat2
/;
}
BEGIN {
package Splattered;
use Moo;
sub monkey { 'WHAT' }
with 'Splat';
sub jab { 3 }
}
BEGIN {
package Splattered2;
use Moo;
sub monkey { 'WHAT' }
with 'Splat2';
sub jab { 3 }
}
BEGIN {
package Ker::Splattered;
use Moo;
sub monkey { 'WHAT' }
with qw/ Ker Splat /;
sub jab { 3 }
}
BEGIN {
package Ker::Splattered2;
use Moo;
sub monkey { 'WHAT' }
with qw/ Ker Splat2 /;
sub jab { 3 }
}
BEGIN {
package KerSplattered;
use Moo;
sub monkey { 'WHAT' }
with qw/ KerSplat /;
sub jab { 3 }
}
BEGIN {
package KerSplattered2;
use Moo;
sub monkey { 'WHAT' }
with qw/ KerSplat2 /;
sub jab { 3 }
}
foreach my $s (
Splattered->new,
Splattered2->new,
Ker::Splattered->new,
Ker::Splattered2->new,
KerSplattered->new,
KerSplattered2->new,
) {
ok($s->can('punch'))
and is($s->punch, 1, 'punch');
ok($s->can('jab'))
and is($s->jab, 3, 'jab');
ok($s->can('monkey'))
and is($s->monkey, 'OW', 'monkey');
ok($s->can('trap'))
and is($s->trap, -1, 'trap');
}
foreach my $c (qw/
Ker::Splattered
Ker::Splattered2
KerSplattered
KerSplattered2
/) {
ok $c->can('has_ker');
ok $c->can('has_splat');
}
done_testing;
|