2 use Test::More tests=>9; {
7 use_ok 'MooseX::Meta::TypeConstraint::Dependent';
8 use_ok 'Moose::Util::TypeConstraints';
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
14 ok my $int = find_type_constraint('Int') => 'Got Int';
16 my $dep_tc = MooseX::Meta::TypeConstraint::Dependent->new(
17 name => "MooseX::Types::Dependent::Depending" ,
18 parent => find_type_constraint('ArrayRef'),
19 dependent_type_constraint=>$int,
20 comparison_callback=>sub {
21 my ($constraining_value, $check_value) = @_;
22 return $check_value > $constraining_value ? 0:1;
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);
32 isa_ok $dep_tc, 'MooseX::Meta::TypeConstraint::Dependent';
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.";