create a basic type, clarified and regularized some of the naming conventions for...
[gitmo/MooseX-Dependent.git] / t / 01-basic.t
CommitLineData
a018b5bb 1
3a5dab74 2use 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}