use strict;
use warnings;
use Test::More;
use Test::Fatal;
use Moose::Meta::TypeConstraint;
use Moose::Util::TypeConstraints;
TODO:
{
local $TODO = 'type names are not validated in the TC metaclass';
# Test written in this way to avoid a warning from like(undef, qr...);
# -- rjbs, 2010-10-25
my $error = exception {
Moose::Meta::TypeConstraint->new( name => 'Foo-Bar' )
};
if (defined $error) {
like(
$error,
qr/contains invalid characters/,
'Type names cannot contain a dash',
);
} else {
fail("Type names cannot contain a dash");
}
}
is( exception { Moose::Meta::TypeConstraint->new( name => 'Foo.Bar::Baz' ) }, undef, 'Type names can contain periods and colons' );
like( exception { subtype 'Foo-Baz' => as 'Item' }, qr/contains invalid characters/, 'Type names cannot contain a dash (via subtype sugar)' );
is( exception { subtype 'Foo.Bar::Baz' => as 'Item' }, undef, 'Type names can contain periods and colons (via subtype sugar)' );
is( Moose::Util::TypeConstraints::find_or_parse_type_constraint('ArrayRef[In-valid]'),
undef,
'find_or_parse_type_constraint returns undef on an invalid name' );
is( Moose::Util::TypeConstraints::find_or_parse_type_constraint('ArrayRef[Va.lid]'),
'ArrayRef[Va.lid]',
'find_or_parse_type_constraint returns name for valid name' );
done_testing;