use
lib
qw( ./lib ./t/lib ../inc ./inc )
;
like(
exception { Type::Tiny::Duck->new(
parent
=> Int,
methods
=> []) },
qr/^Duck type constraints cannot have a parent/
,
);
like(
exception { Type::Tiny::Duck->new(
constraint
=>
sub
{ 1 },
methods
=> []) },
qr/^Duck type constraints cannot have a constraint coderef/
,
);
like(
exception { Type::Tiny::Duck->new(
inlined
=>
sub
{ 1 },
methods
=> []) },
qr/^Duck type constraints cannot have an inlining coderef/
,
);
like(
exception { Type::Tiny::Duck->new() },
qr/^Need to supply list of methods/
,
);
{
sub
new {
bless
[],
shift
};
sub
shake { fail(
"aquiver"
) };
}
my
$e
= exception {
Type::Tiny::Duck
->new(
name
=>
"Elsa"
,
methods
=> [
qw/ shake rattle roll /
])
->assert_valid( Bar->new );
};
is_deeply(
$e
->explain,
[
'"Elsa" requires that the reference can "rattle", "roll", and "shake"'
,
'The reference cannot "rattle"'
,
'The reference cannot "roll"'
,
],
);
done_testing;