restored test for subtyping paramterized types with a parameterized type
[gitmo/MooseX-Types.git] / t / lib / DecoratorLibrary.pm
CommitLineData
20b6a7d1 1package DecoratorLibrary;
2
20b6a7d1 3use MooseX::Types::Moose qw( Str ArrayRef HashRef Int );
4use MooseX::Types
5 -declare => [qw(
6 MyArrayRefBase
7 MyArrayRefInt01
8 MyArrayRefInt02
a706b0f2 9 MyHashRefOfInts
10 MyHashRefOfStr
cf1a8bfa 11 StrOrArrayRef
e088dd03 12 AtLeastOneInt
686e5888 13 Jobs
48a2379b 14 SubOfMyArrayRefInt01
15 BiggerInt
20b6a7d1 16 )];
17
18subtype MyArrayRefBase,
19 as ArrayRef;
20
21coerce MyArrayRefBase,
22 from Str,
23 via {[split(',', $_)]};
24
25subtype MyArrayRefInt01,
26 as ArrayRef[Int];
27
48a2379b 28subtype BiggerInt,
29 as Int,
30 where {$_>10};
af976fb2 31
48a2379b 32subtype SubOfMyArrayRefInt01,
af976fb2 33 as MyArrayRefInt01[BiggerInt];
48a2379b 34
20b6a7d1 35coerce MyArrayRefInt01,
36 from Str,
37 via {[split('\.',$_)]},
38 from HashRef,
54f5d4e6 39 via {[sort values(%$_)]};
20b6a7d1 40
41subtype MyArrayRefInt02,
42 as MyArrayRefBase[Int];
a706b0f2 43
44subtype MyHashRefOfInts,
45 as HashRef[Int];
46
47subtype MyHashRefOfStr,
48 as HashRef[Str];
20b6a7d1 49
50coerce MyArrayRefInt02,
51 from Str,
a706b0f2 52 via {[split(':',$_)]},
53 from MyHashRefOfInts,
54 via {[sort values(%$_)]},
55 from MyHashRefOfStr,
56 via {[ sort map { length $_ } values(%$_) ]},
d9002a85 57 from HashRef[ArrayRef],
e088dd03 58 via {[ sort map { @$_ } values(%$_) ]};
cf1a8bfa 59
60subtype StrOrArrayRef,
e088dd03 61 as Str|ArrayRef;
475bbd1d 62
e088dd03 63subtype AtLeastOneInt,
d9002a85 64 as ArrayRef[Int],
e088dd03 65 where { @$_ > 0 };
686e5888 66
67enum Jobs,
68 (qw/Programming Teaching Banking/);
69
20b6a7d1 701;