added enum test, more docs both internal and external and a few minor code clarification
[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
20b6a7d1 14 )];
15
475bbd1d 16## Some questionable messing around
17 sub my_subtype {
18 my ($subtype, $basetype, @rest) = @_;
19 return subtype($subtype, $basetype, shift @rest, shift @rest);
20 }
21
22 sub my_from {
23 return @_;
24
25 }
26 sub my_as {
27 return @_;
28 }
29## End
30
20b6a7d1 31subtype MyArrayRefBase,
32 as ArrayRef;
33
34coerce MyArrayRefBase,
35 from Str,
36 via {[split(',', $_)]};
37
38subtype MyArrayRefInt01,
39 as ArrayRef[Int];
40
41coerce MyArrayRefInt01,
42 from Str,
43 via {[split('\.',$_)]},
44 from HashRef,
54f5d4e6 45 via {[sort values(%$_)]};
20b6a7d1 46
47subtype MyArrayRefInt02,
48 as MyArrayRefBase[Int];
a706b0f2 49
50subtype MyHashRefOfInts,
51 as HashRef[Int];
52
53subtype MyHashRefOfStr,
54 as HashRef[Str];
20b6a7d1 55
56coerce MyArrayRefInt02,
57 from Str,
a706b0f2 58 via {[split(':',$_)]},
59 from MyHashRefOfInts,
60 via {[sort values(%$_)]},
61 from MyHashRefOfStr,
62 via {[ sort map { length $_ } values(%$_) ]},
d9002a85 63 from HashRef[ArrayRef],
e088dd03 64 via {[ sort map { @$_ } values(%$_) ]};
cf1a8bfa 65
66subtype StrOrArrayRef,
e088dd03 67 as Str|ArrayRef;
475bbd1d 68
e088dd03 69subtype AtLeastOneInt,
d9002a85 70 as ArrayRef[Int],
e088dd03 71 where { @$_ > 0 };
686e5888 72
73enum Jobs,
74 (qw/Programming Teaching Banking/);
75
20b6a7d1 761;