X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2FDecoratorLibrary.pm;h=faa8327cb5af0d5269a1aebff316b504e52310e9;hb=e9dc30af81ed775a6ac0a0f0c1daad021e5569f6;hp=c99c18983d5d2f0c8f408e96c6f012d1e941aa93;hpb=cf1a8bfa50cb6cab796582ddae0a5b05dfcd8759;p=gitmo%2FMooseX-Types.git diff --git a/t/lib/DecoratorLibrary.pm b/t/lib/DecoratorLibrary.pm index c99c189..faa8327 100644 --- a/t/lib/DecoratorLibrary.pm +++ b/t/lib/DecoratorLibrary.pm @@ -1,9 +1,6 @@ package DecoratorLibrary; -use warnings; -use strict; - -use MooseX::Types::Moose qw( Str ArrayRef HashRef Int ); +use MooseX::Types::Moose qw( Str ArrayRef HashRef Int Object); use MooseX::Types -declare => [qw( MyArrayRefBase @@ -12,30 +9,49 @@ use MooseX::Types MyHashRefOfInts MyHashRefOfStr StrOrArrayRef + AtLeastOneInt + Jobs + SubOfMyArrayRefInt01 + BiggerInt + isFive + isTen + isFifteen + TwoEqualArrayRefs + VeryBigInt + FiveOrTenOrFifteen + WierdIntegersArrayRef1 + WierdIntegersArrayRef2 )]; subtype MyArrayRefBase, as ArrayRef; - + coerce MyArrayRefBase, from Str, via {[split(',', $_)]}; - + subtype MyArrayRefInt01, as ArrayRef[Int]; +subtype BiggerInt, + as Int, + where {$_>10}; + +subtype SubOfMyArrayRefInt01, + as MyArrayRefInt01[BiggerInt]; + coerce MyArrayRefInt01, from Str, via {[split('\.',$_)]}, from HashRef, via {[sort values(%$_)]}; - + subtype MyArrayRefInt02, as MyArrayRefBase[Int]; - + subtype MyHashRefOfInts, as HashRef[Int]; - + subtype MyHashRefOfStr, as HashRef[Str]; @@ -46,10 +62,41 @@ coerce MyArrayRefInt02, via {[sort values(%$_)]}, from MyHashRefOfStr, via {[ sort map { length $_ } values(%$_) ]}, - ### Can't do HashRef[ArrayRef] here, need to force precidence I guess??? - from HashRef([ArrayRef]), - via {[ sort map { @$_ } values(%$_)] }; + from HashRef[ArrayRef], + via {[ sort map { @$_ } values(%$_) ]}; subtype StrOrArrayRef, - from Str|ArrayRef; + as Str|ArrayRef; + +subtype AtLeastOneInt, + as ArrayRef[Int], + where { @$_ > 0 }; + +enum Jobs, + (qw/Programming Teaching Banking/); + +subtype isFive, + as Int, + where { $_ == 5}; + +subtype isTen, + as Int, + where { $_ == 10}; + +subtype isFifteen, + as Int, + where { $_ == 15}; + +subtype VeryBigInt, + as BiggerInt, + where {$_>100}; + +subtype FiveOrTenOrFifteen, + as isFive|isTen|isFifteen; + +subtype WierdIntegersArrayRef1, + as ArrayRef[FiveOrTenOrFifteen|VeryBigInt]; + +subtype WierdIntegersArrayRef2, + as ArrayRef[FiveOrTenOrFifteen|Object]; 1;