fix spelling of integer
[gitmo/MooseX-Types.git] / t / lib / DecoratorLibrary.pm
1 package DecoratorLibrary;
2
3 use MooseX::Types::Moose qw( Str ArrayRef HashRef Int Object);
4 use MooseX::Types
5     -declare => [qw(
6         MyArrayRefBase
7         MyArrayRefInt01
8         MyArrayRefInt02
9         MyHashRefOfInts
10         MyHashRefOfStr
11         StrOrArrayRef
12         AtLeastOneInt
13         Jobs
14         SubOfMyArrayRefInt01
15         BiggerInt
16         isFive
17         isTen
18         isFifteen
19         TwoEqualArrayRefs
20         VeryBigInt
21         FiveOrTenOrFifteen
22         WierdIntegersArrayRef1
23         WierdIntegersArrayRef2
24     )];
25
26 subtype MyArrayRefBase,
27     as ArrayRef;
28     
29 coerce MyArrayRefBase,
30     from Str,
31     via {[split(',', $_)]};
32     
33 subtype MyArrayRefInt01,
34     as ArrayRef[Int];
35
36 subtype BiggerInt,
37     as Int,
38     where {$_>10};
39     
40 subtype SubOfMyArrayRefInt01,
41     as MyArrayRefInt01[BiggerInt];
42
43 coerce MyArrayRefInt01,
44     from Str,
45     via {[split('\.',$_)]},
46     from HashRef,
47     via {[sort values(%$_)]};
48     
49 subtype MyArrayRefInt02,
50     as MyArrayRefBase[Int];
51     
52 subtype MyHashRefOfInts,
53     as HashRef[Int];
54     
55 subtype MyHashRefOfStr,
56     as HashRef[Str];
57
58 coerce MyArrayRefInt02,
59     from Str,
60     via {[split(':',$_)]},
61     from MyHashRefOfInts,
62     via {[sort values(%$_)]},
63     from MyHashRefOfStr,
64     via {[ sort map { length $_ } values(%$_) ]},
65     from HashRef[ArrayRef],
66     via {[ sort map { @$_ } values(%$_) ]};
67
68 subtype StrOrArrayRef,
69     as Str|ArrayRef;
70
71 subtype AtLeastOneInt,
72     as ArrayRef[Int],
73     where { @$_ > 0 };
74     
75 enum Jobs,
76     (qw/Programming Teaching Banking/);
77     
78 subtype isFive,
79  as Int,
80  where { $_ == 5};
81
82 subtype isTen,
83  as Int,
84  where { $_ == 10};
85  
86 subtype isFifteen,
87  as Int,
88  where { $_ == 15};
89  
90 subtype VeryBigInt,
91  as BiggerInt,
92  where {$_>100};
93  
94 subtype FiveOrTenOrFifteen,
95  as isFive|isTen|isFifteen;
96
97 subtype WierdIntegersArrayRef1,
98  as ArrayRef[FiveOrTenOrFifteen|VeryBigInt];
99
100 subtype WierdIntegersArrayRef2,
101  as ArrayRef[FiveOrTenOrFifteen|Object];    
102 1;