Got the basic requirement in place!
[gitmo/MooseX-Dependent.git] / t / 01-basic.t
index 3327e2a..611cb06 100644 (file)
@@ -1,35 +1,39 @@
-use Test::More tests=>5;
-use MooseX::Types::Structured qw(Tuple slurpy);
-use MooseX::Types qw(Str Object);
 
-use_ok 'MooseX::Meta::TypeConstraint::Structured';
-use_ok 'Moose::Util::TypeConstraints';
-
-ok my $int = find_type_constraint('Int') => 'Got Int';
-ok my $str = find_type_constraint('Str') => 'Got Str';
-ok my $obj = find_type_constraint('Object') => 'Got Object';
-ok my $arrayref = find_type_constraint('ArrayRef') => 'Got ArrayRef';
-
-my $a = [1,2,3,4];
-
-
-package Dependent;
-
-use overload(
-       '&{}' => sub {
-               warn 'sdfsdfsdfsdfsdf';
-               return sub {};
-       },
-);
-
-sub new {
-       my $class = shift @_;
-       return bless {a=>1}, $class;
+use Test::More tests=>9; {
+       
+       use strict;
+       use warnings;
+       
+       use_ok 'MooseX::Meta::TypeConstraint::Dependent';
+       use_ok 'Moose::Util::TypeConstraints';
+
+       ## A sample dependent type constraint the requires two ints and sees if
+       ## the dependent value (the first) is greater than the constraining value
+       ## (the second).
+       
+       ok my $int = find_type_constraint('Int') => 'Got Int';
+       
+       my $dep_tc = MooseX::Meta::TypeConstraint::Dependent->new(
+               name => "MooseX::Types::Dependent::Depending" ,
+               parent => find_type_constraint('Int'),
+               dependent_type_constraint=>$int,
+               comparison_callback=>sub {
+                       my ($constraining_value, $check_value) = @_;
+                       return $check_value > $constraining_value ? 0:1;
+               },
+               constraining_type_constraint =>$int,
+               constraint_generator=> sub {
+                       ## Because "shift->(shift,shift)" is not very clear, is it :)
+                       my ($callback, $constraining_value, $check_value) = @_;
+                       return $callback->($constraining_value, $check_value);
+               },
+       );
+
+       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.";
 }
-
-1;
-
-my $dependent = Dependent->new($int);
-
-$dependent->();
-