Got the basic requirement in place!
[gitmo/MooseX-Dependent.git] / t / 01-basic.t
1
2 use Test::More tests=>9; {
3         
4         use strict;
5         use warnings;
6         
7         use_ok 'MooseX::Meta::TypeConstraint::Dependent';
8         use_ok 'Moose::Util::TypeConstraints';
9
10         ## A sample dependent type constraint the requires two ints and sees if
11         ## the dependent value (the first) is greater than the constraining value
12         ## (the second).
13         
14         ok my $int = find_type_constraint('Int') => 'Got Int';
15         
16         my $dep_tc = MooseX::Meta::TypeConstraint::Dependent->new(
17                 name => "MooseX::Types::Dependent::Depending" ,
18                 parent => find_type_constraint('Int'),
19                 dependent_type_constraint=>$int,
20                 comparison_callback=>sub {
21                         my ($constraining_value, $check_value) = @_;
22                         return $check_value > $constraining_value ? 0:1;
23                 },
24                 constraining_type_constraint =>$int,
25                 constraint_generator=> sub {
26                         ## Because "shift->(shift,shift)" is not very clear, is it :)
27                         my ($callback, $constraining_value, $check_value) = @_;
28                         return $callback->($constraining_value, $check_value);
29                 },
30         );
31
32         isa_ok $dep_tc, 'MooseX::Meta::TypeConstraint::Dependent';
33         
34         ok !$dep_tc->check('a',10), "Fails, 'a' is not an Int.";
35         ok !$dep_tc->check(5,'b'), "Fails, 'b' is not an Int either.";
36         ok !$dep_tc->check([4,1]), "Fails, since this isn't an arrayref";
37         ok !$dep_tc->check(5,10), "Fails, 5 is less than 10";
38         ok $dep_tc->check(11,6), "Success, 11 is greater than 6.";
39 }