X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F03-coercions.t;h=db900d3f1e185c931fbdbde44bc4a4784c274d0e;hb=9c319add216c3b774b1740bf98b1a1f8492dc1c0;hp=3743b80eb22fd1a3f4298d4831a03b04dc06b879;hpb=54f0d8d6fe1876ce84532c9e6d790cd288eaad72;p=gitmo%2FMooseX-Dependent.git diff --git a/t/03-coercions.t b/t/03-coercions.t index 3743b80..db900d3 100644 --- a/t/03-coercions.t +++ b/t/03-coercions.t @@ -1,5 +1,5 @@ -use Test::More tests=>9; { +use Test::More tests=>14; { use strict; use warnings; @@ -33,7 +33,27 @@ use Test::More tests=>9; { ok !OlderThanAge([older_than=>1])->check('aaa'), '"aaa" not an int'; ok !OlderThanAge([older_than=>10])->check(9), '9 is not older than 10'; + my $a = OlderThanAge([older_than=>1]); + + coerce $a, + from ArrayRef, + via { + my ($arrayref, $constraining_value) = @_; + my $age; + $age += $_ for @$arrayref; + return $age; + }; + + is $a->coerce([1,2,3]), 6, 'Got expected Value'; + coerce OlderThanAge, + from HashRef, + via { + my ($hashref, $constraining_value) = @_; + return keys %$hashref; + }; + + coerce OlderThanAge([older_than=>5]), from ArrayRef, via { my ($arrayref, $constraining_value) = @_; @@ -41,6 +61,15 @@ use Test::More tests=>9; { $age += $_ for @$arrayref; return $age; }; - - #warn OlderThanAge([older_than=>1])->coerce([1,2,3,4]); + + is OlderThanAge->name, 'main::OlderThanAge', + 'Got corect name for OlderThanAge'; + is OlderThanAge([older_than=>5])->coerce([1..10]), 55, + 'Coerce works'; + like OlderThanAge([older_than=>2])->name, qr/main::OlderThanAge\[/, + 'Got correct name for OlderThanAge([older_than=>2])'; + is OlderThanAge([older_than=>2])->coerce({a=>1,b=>2,c=>3,d=>4}), 4, + 'inherited Coerce works'; + + } \ No newline at end of file