Attribute-Contract
view release on metacpan or search on metacpan
t/ensures.t view on Meta::CPAN
use strict;
use warnings;
use Test::More;
use Test::Fatal;
package MyClass;
use Attribute::Contract -types => [qw/Str/];
sub method : ContractEnsures(Str) {
'ok';
}
package MyClassInvalid;
use Attribute::Contract -types => [qw/Str/];
sub method : ContractEnsures(Str) {
[];
}
package main;
subtest 'correct return value' => sub {
ok !exception { MyClass->method() };
};
subtest 'invalid return value' => sub {
like exception { MyClassInvalid->method() },
qr/\[\] did not pass type constraint "Str"/;
};
done_testing;
( run in 0.918 second using v1.01-cache-2.11-cpan-54e63673c56 )