a55cf04984d5a867668355362ffe89fc0efd6320
[gitmo/Moose.git] / t / 040_type_constraints / 033_type_names.t
1 use strict;
2 use warnings;
3
4 use Test::More;
5 use Test::Exception;
6
7 use Moose::Meta::TypeConstraint;
8 use Moose::Util::TypeConstraints;
9
10
11 TODO:
12 {
13     local $TODO = 'type names are not validated in the TC metaclass';
14
15     # Test written in this way to avoid a warning from like(undef, qr...);
16     # -- rjbs, 2010-10-25
17     my $error = exception {
18         Moose::Meta::TypeConstraint->new( name => 'Foo-Bar' )
19     };
20
21     if (defined $error) {
22         like(
23             $error,
24             qr/contains invalid characters/,
25             'Type names cannot contain a dash',
26         );
27     } else {
28         fail("Type names cannot contain a dash");
29     }
30 }
31
32 lives_ok { Moose::Meta::TypeConstraint->new( name => 'Foo.Bar::Baz' ) }
33 'Type names can contain periods and colons';
34
35 throws_ok { subtype 'Foo-Baz' => as 'Item' }
36 qr/contains invalid characters/,
37     'Type names cannot contain a dash (via subtype sugar)';
38
39 lives_ok { subtype 'Foo.Bar::Baz' => as 'Item' }
40 'Type names can contain periods and colons (via subtype sugar)';
41
42 is( Moose::Util::TypeConstraints::find_or_parse_type_constraint('ArrayRef[In-valid]'),
43     undef,
44     'find_or_parse_type_constraint returns undef on an invalid name' );
45
46 is( Moose::Util::TypeConstraints::find_or_parse_type_constraint('ArrayRef[Va.lid]'),
47     'ArrayRef[Va.lid]',
48     'find_or_parse_type_constraint returns name for valid name' );
49
50 done_testing;