updated changelog, removed pointly debugging stuff from tests
[gitmo/MooseX-Types.git] / t / lib / DecoratorLibrary.pm
index 7912331..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,
@@ -25,16 +27,35 @@ coerce MyArrayRefInt01,
     from Str,
     via {[split('\.',$_)]},
     from HashRef,
-    via {[values(%$_)]};
+    via {[sort values(%$_)]};
     
 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;