updated makefile requirements and got the basics of coercions in place
[gitmo/MooseX-Dependent.git] / t / 03-coercions.t
index 3743b80..db900d3 100644 (file)
@@ -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