Commit | Line | Data |
a018b5bb |
1 | |
3a5dab74 |
2 | use Test::More tests=>9; { |
3cfd35fd |
3 | |
4 | use strict; |
5 | use warnings; |
6 | |
7 | use_ok 'MooseX::Meta::TypeConstraint::Dependent'; |
8 | use_ok 'Moose::Util::TypeConstraints'; |
9 | |
3a5dab74 |
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). |
3cfd35fd |
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" , |
9274c53e |
18 | parent => find_type_constraint('ArrayRef'), |
3cfd35fd |
19 | dependent_type_constraint=>$int, |
3a5dab74 |
20 | comparison_callback=>sub { |
9b6d2e22 |
21 | my ($dependent_val, $constraining_val) = @_; |
22 | return ($dependent_val > $constraining_val) ? 1:undef; |
3cfd35fd |
23 | }, |
3a5dab74 |
24 | constraining_type_constraint =>$int, |
25 | constraint_generator=> sub { |
9b6d2e22 |
26 | my ($dependent_val, $callback, $constraining_val) = @_; |
27 | return $callback->($dependent_val, $constraining_val); |
3cfd35fd |
28 | }, |
29 | ); |
3cfd35fd |
30 | |
31 | isa_ok $dep_tc, 'MooseX::Meta::TypeConstraint::Dependent'; |
3a5dab74 |
32 | |
9274c53e |
33 | ok !$dep_tc->check(['a',10]), "Fails, 'a' is not an Int."; |
34 | ok !$dep_tc->check([5,'b']), "Fails, 'b' is not an Int either."; |
35 | ok !$dep_tc->check({4,1}), "Fails, since this isn't an arrayref"; |
36 | ok !$dep_tc->check([5,10]), "Fails, 5 is less than 10"; |
37 | ok $dep_tc->check([11,6]), "Success, 11 is greater than 6."; |
a018b5bb |
38 | } |