X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F03-coercions.t;fp=t%2F03-coercions.t;h=42657eec23edbbca65946168899a9a51548d34aa;hb=d1cfb0438ab08c82be373f613ecaf6c2d175d4e8;hp=1e105be826f3ee2e0a33a9e8657fb5782de85475;hpb=9be9bf16f41c9d2de3432ac82e7d27fa23701848;p=gitmo%2FMooseX-Dependent.git diff --git a/t/03-coercions.t b/t/03-coercions.t index 1e105be..42657ee 100644 --- a/t/03-coercions.t +++ b/t/03-coercions.t @@ -1,78 +1,78 @@ use Test::More tests=>15; { - - use strict; - use warnings; + + use strict; + use warnings; - use MooseX::Types::Parameterizable qw(Parameterizable); - use MooseX::Types::Moose qw(Int Str HashRef ArrayRef); - - use MooseX::Types -declare=>[qw( - InfoHash OlderThanAge DefinedOlderThanAge - )]; - - ok subtype( InfoHash, - as HashRef[Int], - where { - defined $_->{older_than}; - }), 'Created InfoHash Set (reduce need to depend on Dict type'; + use MooseX::Types::Parameterizable qw(Parameterizable); + use MooseX::Types::Moose qw(Int Str HashRef ArrayRef); + + use MooseX::Types -declare=>[qw( + InfoHash OlderThanAge DefinedOlderThanAge + )]; + + ok subtype( InfoHash, + as HashRef[Int], + where { + defined $_->{older_than}; + }), 'Created InfoHash Set (reduce need to depend on Dict type'; - ok InfoHash->check({older_than=>25}), 'Good InfoHash'; - ok !InfoHash->check({older_than=>'aaa'}), 'Bad InfoHash'; - ok !InfoHash->check({at_least=>25}), 'Bad InfoHash'; - - ok subtype( OlderThanAge, - as Parameterizable[Int, InfoHash], - where { - my ($value, $dict) = @_; - return $value > $dict->{older_than} ? 1:0; - }), 'Created the OlderThanAge subtype'; - - ok OlderThanAge([{older_than=>25}])->check(39), '39 is older than 25'; - ok OlderThanAge([older_than=>1])->check(9), '9 is older than 1'; - ok !OlderThanAge([older_than=>1])->check('aaa'), '"aaa" not an int'; - ok !OlderThanAge([older_than=>10])->check(9), '9 is not older than 10'; - - coerce OlderThanAge, - from HashRef, - via { - my ($hashref, $constraining_value) = @_; - return scalar(keys(%$hashref)); - }, - from ArrayRef, - via { - my ($arrayref, $constraining_value) = @_; - #use Data::Dump qw/dump/; warn dump $constraining_value; - my $age; - $age += $_ for @$arrayref; - return $age; - }; + ok InfoHash->check({older_than=>25}), 'Good InfoHash'; + ok !InfoHash->check({older_than=>'aaa'}), 'Bad InfoHash'; + ok !InfoHash->check({at_least=>25}), 'Bad InfoHash'; + + ok subtype( OlderThanAge, + as Parameterizable[Int, InfoHash], + where { + my ($value, $dict) = @_; + return $value > $dict->{older_than} ? 1:0; + }), 'Created the OlderThanAge subtype'; + + ok OlderThanAge([{older_than=>25}])->check(39), '39 is older than 25'; + ok OlderThanAge([older_than=>1])->check(9), '9 is older than 1'; + ok !OlderThanAge([older_than=>1])->check('aaa'), '"aaa" not an int'; + ok !OlderThanAge([older_than=>10])->check(9), '9 is not older than 10'; + + coerce OlderThanAge, + from HashRef, + via { + my ($hashref, $constraining_value) = @_; + return scalar(keys(%$hashref)); + }, + from ArrayRef, + via { + my ($arrayref, $constraining_value) = @_; + #use Data::Dump qw/dump/; warn dump $constraining_value; + my $age; + $age += $_ for @$arrayref; + return $age; + }; - is OlderThanAge->name, 'main::OlderThanAge', - 'Got corect name for OlderThanAge'; - is OlderThanAge([older_than=>5])->coerce([1..10]), 55, - 'Coerce works'; - is OlderThanAge([older_than=>5])->coerce({a=>1,b=>2,c=>3,d=>4}), 4, - '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=>5,b=>6,c=>7,d=>8}), 4, - 'Coerce works'; + is OlderThanAge->name, 'main::OlderThanAge', + 'Got corect name for OlderThanAge'; + is OlderThanAge([older_than=>5])->coerce([1..10]), 55, + 'Coerce works'; + is OlderThanAge([older_than=>5])->coerce({a=>1,b=>2,c=>3,d=>4}), 4, + '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=>5,b=>6,c=>7,d=>8}), 4, + 'Coerce works'; - SKIP: { - skip 'Type Coercions on defined types not supported yet', 1; + SKIP: { + skip 'Type Coercions on defined types not supported yet', 1; - subtype DefinedOlderThanAge, as OlderThanAge([older_than=>1]); - - coerce DefinedOlderThanAge, - from ArrayRef, - via { - my ($arrayref, $constraining_value) = @_; - my $age; - $age += $_ for @$arrayref; - return $age; - }; - - is DefinedOlderThanAge->coerce([1,2,3]), 6, 'Got expected Value'; - } + subtype DefinedOlderThanAge, as OlderThanAge([older_than=>1]); + + coerce DefinedOlderThanAge, + from ArrayRef, + via { + my ($arrayref, $constraining_value) = @_; + my $age; + $age += $_ for @$arrayref; + return $age; + }; + + is DefinedOlderThanAge->coerce([1,2,3]), 6, 'Got expected Value'; + } }