Merge pull request #3 from brianphillips/master
[gitmo/MooseX-Dependent.git] / t / 04-types-parameterizable-parameterized.t
CommitLineData
7970c9bd 1use strict;
2use warnings;
3
4use Test::More;
5use MooseX::Types::Parameterizable qw(Parameterizable);
6use MooseX::Types::Moose qw( Int ArrayRef );
7use MooseX::Types -declare=>[qw( EvenInt ArrayOfEvenIntsWithLength )];
8
9ok subtype( EvenInt,
10 as Int,
11 where {
12 my $val = shift @_;
13 return $val % 2 ? 0:1;
14 }),
15 'Created a subtype of Int';
16
17ok subtype(
18 ArrayOfEvenIntsWithLength,
19 as Parameterizable[
20 ArrayRef[EvenInt],
21 Int,
22 ],
23 where {
24 my ($value, $int) = @_;
25 my $length = scalar(@$value);
26 $length < ($int+1) ? 1:0;
27 },
28), 'Created parameterized parameterized!';
29
30ok ! ArrayOfEvenIntsWithLength([5])->check([2,4,6,8,10,12,14]),
31 'correctly failed too long array';
32
33ok ! ArrayOfEvenIntsWithLength([5])->check([2,4,6,8,11]),
34 'correctly failed with odd number in array';
35
36ok ArrayOfEvenIntsWithLength([5])->check([2,4,6]),
37 'correctly passed array';
38
39done_testing;
40