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 )