Added a test, updated Changes
[catagits/Catalyst-Devel.git] / t / check_types.t
CommitLineData
12594914 1# t0m++
2package My::Types;
3use MooseX::Types -declare [qw/ ValidAppName ValidAppComponent /];
4
5my $appname_re = qr/[\w:]+/;
6my $regex = qr/$appname_re::(M|V|C|Model|View|Controller)::.*/;
7
8subtype ValidAppName,
9 as Str,
10 where { /^$appname_re$/ && ! /$regex/ };
11
12subtype ValidAppComponent,
13 as Str,
14 where { /^$regex$/ };
15
16coerce ValidAppName,
17 from ValidAppComponent,
18 via { Catalyst::Utils::class2appclass($_); };
19
20package main;
21use Test::More 'no_plan';
22use Moose::Util::TypeContraints;
23use My::Types qw/ValidAppName ValidAppComponent/;
24
25my $app_tc = find_type_constraint(ValidAppName);
26ok $app_tc;
27ok !$app_tc->check('');
28ok $app_tc->check('MyApp');
29
30my $comp_tc = find_type_constraint(ValidAppComponent);
31ok $comp_tc;
32ok !$comp_tc->check('');
33ok !$comp_tc->check('MyApp');
34ok $comp_tc->check('MyApp::Model::Foo');
35
36is $app_tc->coerce('MyApp::Model::Foo'), 'MyApp';
37
38done_testing;
39