X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F05-pod-examples.t;fp=t%2F05-pod-examples.t;h=18105993727339d525800c475f136a7a7a1164e5;hb=c9ecd5066a4cf4e7124372ba0efbd89841553084;hp=e5ded22cfbb9f999b71fb8630f9e9d41604a16e4;hpb=afdaaf5243063b5bb9230df03bf07aad5c71207a;p=gitmo%2FMooseX-Dependent.git diff --git a/t/05-pod-examples.t b/t/05-pod-examples.t index e5ded22..1810599 100644 --- a/t/05-pod-examples.t +++ b/t/05-pod-examples.t @@ -11,10 +11,6 @@ use Test::More; use MooseX::Types::Moose qw(Str Int ArrayRef); use MooseX::Types -declare=>[qw(Varchar)]; - ## Create a type constraint that is a string but parameterizes an integer - ## that is used as a maximum length constraint on that string, similar to - ## an SQL Varchar type. - subtype Varchar, as Parameterizable[Str,Int], where { @@ -67,6 +63,55 @@ use Test::More; 'coercion as expected'; } +{ + package Test::MooseX::Types::Parameterizable::Description; + + use Moose; + use MooseX::Types::Parameterizable qw(Parameterizable); + use MooseX::Types::Moose qw(HashRef Int); + use MooseX::Types -declare=>[qw(Range RangedInt)]; + + ## Minor change from docs to avoid additional test dependencies + subtype Range, + as HashRef[Int], + where { + my ($range) = @_; + return $range->{max} > $range->{min}; + }, + message { "Not a Valid range [ $_->{max} not > $_->{min} ] " }; + + subtype RangedInt, + as Parameterizable[Int, Range], + where { + my ($value, $range) = @_; + return ($value >= $range->{min} && + $value <= $range->{max}); + }; + + Test::More::ok RangedInt([{min=>10,max=>100}])->check(50); + Test::More::ok !RangedInt([{min=>50, max=>75}])->check(99); + + eval { + Test::More::ok !RangedInt([{min=>99, max=>10}])->check(10); + }; + + Test::More::ok $@, 'There was an error'; + Test::More::like $@, qr(Not a Valid range), 'Correct custom error'; + + Test::More::ok RangedInt([min=>10,max=>100])->check(50); + Test::More::ok ! RangedInt([min=>50, max=>75])->check(99); + + eval { + RangedInt([min=>99, max=>10])->check(10); + }; + + Test::More::ok $@, 'There was an error'; + Test::More::like $@, qr(Not a Valid range), 'Correct custom error'; + + +} + + done_testing;