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