updated changelog, removed pointly debugging stuff from tests
[gitmo/MooseX-Types.git] / t / lib / DecoratorLibrary.pm
index ad3c6d2..0aef0cd 100644 (file)
@@ -1,14 +1,16 @@
 package DecoratorLibrary;
 
-use warnings;
-use strict;
-
 use MooseX::Types::Moose qw( Str ArrayRef HashRef Int );
 use MooseX::Types
     -declare => [qw(
         MyArrayRefBase
         MyArrayRefInt01
         MyArrayRefInt02
+        MyHashRefOfInts
+        MyHashRefOfStr
+        StrOrArrayRef
+        AtLeastOneInt
+        Jobs
     )];
 
 subtype MyArrayRefBase,
@@ -29,12 +31,31 @@ coerce MyArrayRefInt01,
     
 subtype MyArrayRefInt02,
     as MyArrayRefBase[Int];
+    
+subtype MyHashRefOfInts,
+    as HashRef[Int];
+    
+subtype MyHashRefOfStr,
+    as HashRef[Str];
 
 coerce MyArrayRefInt02,
     from Str,
-    via {[split(':',$_)]};
-    from HashRef[Int],
-    via {[values(%$_)]},
-    from HashRef[Str],
-    via {[ map { length $_ } values(%_) ]};
+    via {[split(':',$_)]},
+    from MyHashRefOfInts,
+    via {[sort values(%$_)]},
+    from MyHashRefOfStr,
+    via {[ sort map { length $_ } values(%$_) ]},
+    from HashRef[ArrayRef],
+    via {[ sort map { @$_ } values(%$_) ]};
+
+subtype StrOrArrayRef,
+    as Str|ArrayRef;
+
+subtype AtLeastOneInt,
+    as ArrayRef[Int],
+    where { @$_ > 0 };
+    
+enum Jobs,
+    (qw/Programming Teaching Banking/);
+    
 1;