use strict;
use Test::More 0.96;
{
package Foo;
use Moose;
has str => (
isa => 'KeyWith[ ArrayRef[Any] ]',
is => 'rw',
required => 1,
);
__PACKAGE__->meta->make_immutable;
}
isnt(
exception {
my $instance = Foo->new();
},
undef,
'str attribute is required'
);
isnt(
exception {
my $instance = Foo->new( str => 'Hello' );
},
undef,
'str is not a string'
);
isnt(
exception {
my $instance = Foo->new( str => [] );
},
undef,
'str is not an empty array'
);
isnt(
exception {
my $instance = Foo->new( str => ['foo'] );
},
undef,
'str is not an array of length 1'
);
is(
exception {
my $instance = Foo->new( str => [ 'foo', [] ] );
},
undef,
'str is an array of length 2'
);
isnt(
exception {
my $instance = Foo->new( str => [ 'foo', 'bar', 'baz' ] );
},
undef,
'str is not an array of length 3'
);
is(
exception {
my $instance = Foo->new( str => [ 'foo', [] ] );
},
undef,
'str->[1] is an empty array'
);
done_testing;