Got the basic requirement in place!
John Napiorkowski [Sun, 29 Mar 2009 17:18:24 +0000 (17:18 +0000)]
lib/MooseX/Types/Dependent.pm
t/01-basic.t

index b4f10ef..3f45cf1 100644 (file)
@@ -21,16 +21,16 @@ MooseX::Types::Dependent - L<MooseX::Types> constraints that depend on values.
           as Depending[
             Int,
             sub {
-              shift->not_exists(shift);
+              shift->exists(shift) ? 0:1;
             },
             Set,
           ];
           
         possible sugar options
         
-        Depending 
-        as Depending sub :Set {} Int;
-        depending(Set $set) { $set->exists($Int) } Int;
+        as Depending {
+                shift->exists(shift) ? 0:1;        
+        } [Int, Set];
         
         May have some ready to go, such as
         as isGreaterThan[
index 611cb06..97dfdd9 100644 (file)
@@ -15,7 +15,7 @@ use Test::More tests=>9; {
        
        my $dep_tc = MooseX::Meta::TypeConstraint::Dependent->new(
                name => "MooseX::Types::Dependent::Depending" ,
-               parent => find_type_constraint('Int'),
+               parent => find_type_constraint('ArrayRef'),
                dependent_type_constraint=>$int,
                comparison_callback=>sub {
                        my ($constraining_value, $check_value) = @_;
@@ -31,9 +31,9 @@ use Test::More tests=>9; {
 
        isa_ok $dep_tc, 'MooseX::Meta::TypeConstraint::Dependent';
        
-       ok !$dep_tc->check('a',10), "Fails, 'a' is not an Int.";
-       ok !$dep_tc->check(5,'b'), "Fails, 'b' is not an Int either.";
-       ok !$dep_tc->check([4,1]), "Fails, since this isn't an arrayref";
-       ok !$dep_tc->check(5,10), "Fails, 5 is less than 10";
-       ok $dep_tc->check(11,6), "Success, 11 is greater than 6.";
+       ok !$dep_tc->check(['a',10]), "Fails, 'a' is not an Int.";
+       ok !$dep_tc->check([5,'b']), "Fails, 'b' is not an Int either.";
+       ok !$dep_tc->check({4,1}), "Fails, since this isn't an arrayref";
+       ok !$dep_tc->check([5,10]), "Fails, 5 is less than 10";
+       ok $dep_tc->check([11,6]), "Success, 11 is greater than 6.";
 }