1#!/usr/bin/perl -w
2
3use strict;
4
5use Params::Validate qw(validate validate_pos SCALAR);
6use Test::More tests => 4;
7
8{
9    my @p = ( foo => 1, bar => 2 );
10
11    eval { validate( @p, { foo => { type => SCALAR,
12                                    callbacks =>
13                                    { 'bigger than bar' =>
14                                      sub { $_[0] > $_[1]->{bar} } },
15                                  },
16                           bar => { type => SCALAR },
17                         } ) };
18
19    like( $@, qr/bigger than bar/ );
20
21    $p[1] = 3;
22    eval { validate( @p, { foo => { type => SCALAR,
23                                    callbacks =>
24                                    { 'bigger than bar' =>
25                                      sub { $_[0] > $_[1]->{bar} } },
26                                  },
27                           bar => { type => SCALAR },
28                         } ) };
29
30    is( $@, q{} );
31}
32
33{
34    my @p = (1, 2, 3);
35    eval { validate_pos( @p,
36                         { type => SCALAR,
37                           callbacks =>
38                           { 'bigger than [1]' =>
39                             sub { $_[0] > $_[1]->[1] } } },
40                         { type => SCALAR },
41                         { type => SCALAR },
42                       ) };
43
44    like( $@, qr/bigger than \[1\]/ );
45
46    $p[0] = 5;
47    eval { validate_pos( @p,
48                         { type => SCALAR,
49                           callbacks =>
50                           { 'bigger than [1]' =>
51                             sub { $_[0] > $_[1]->[1] } } },
52                         { type => SCALAR },
53                         { type => SCALAR },
54                       ) };
55
56    is( $@, q{} );
57}
58