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
|
use v5.14;
use strict;
use warnings;
package Example1 {
use Moo;
use Sub::Quote 'quote_sub';
use Types::Standard -types;
has my_string => (
is => 'ro',
isa => Str->where( 'length($_) > 0' ),
);
has my_array => (
is => 'ro',
isa => ArrayRef->where( '@$_ > 0' ),
);
has my_hash => (
is => 'ro',
isa => HashRef->where( 'keys(%$_) > 0' ),
);
}
use Test::More;
use Test::Fatal;
is(
exception { Example1::->new( my_string => 'u' ) },
undef,
'non-empty string, okay',
);
isa_ok(
exception { Example1::->new( my_string => '' ) },
'Error::TypeTiny',
'result of empty string',
);
is(
exception { Example1::->new( my_array => [undef] ) },
undef,
'non-empty arrayref, okay',
);
isa_ok(
exception { Example1::->new( my_array => [] ) },
'Error::TypeTiny',
'result of empty arrayref',
);
is(
exception { Example1::->new( my_hash => { '' => undef } ) },
undef,
'non-empty hashref, okay',
);
isa_ok(
exception { Example1::->new( my_hash => +{} ) },
'Error::TypeTiny',
'result of empty hashref',
);
done_testing;
|