1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
#!/usr/bin/perl -w
use strict;
use Params::Validate qw(validate validate_pos SCALAR);
use Test::More tests => 6;
{
package Tie::SimpleArray;
use Tie::Array;
use base 'Tie::StdArray';
}
{
package Tie::SimpleHash;
use Tie::Hash;
use base 'Tie::StdHash';
}
{
tie my @p, 'Tie::SimpleArray';
my %spec = ( foo => 1 );
push @p, ( foo => 'hello' );
eval { validate( @p, \%spec ) };
warn $@ if $@;
is( $@, q{}, 'validate() call succeeded with tied params array and regular hashref spec' );
}
SKIP:
{
skip 'Params::Validate segfaults with tied hash for spec', 1;
my @p;
tie my %spec, 'Tie::SimpleHash';
$spec{foo} = 1;
push @p, ( foo => 'hello' );
eval { validate( @p, \%spec ) };
warn $@ if $@;
is( $@, q{}, 'validate() call succeeded with regular params array and tied hashref spec' );
}
SKIP:
{
skip 'Params::Validate segfaults with tied hash for spec', 1;
tie my @p, 'Tie::SimpleArray';
tie my %spec, 'Tie::SimpleHash';
$spec{foo} = 1;
push @p, ( foo => 'hello' );
eval { validate( @p, \%spec ) };
warn $@ if $@;
is( $@, q{}, 'validate() call succeeded with tied params array and tied hashref spec' );
}
{
tie my @p, 'Tie::SimpleArray';
my %spec;
$spec{type} = SCALAR;
push @p, 'hello';
eval { validate_pos( @p, \%spec ) };
warn $@ if $@;
is( $@, q{}, 'validate_pos() call succeeded with tied params array and regular hashref spec' );
}
SKIP:
{
skip 'Params::Validate segfaults with tied hash for spec', 1;
my @p;
tie my %spec, 'Tie::SimpleHash';
$spec{type} = SCALAR;
push @p, 'hello';
eval { validate_pos( @p, \%spec ) };
warn $@ if $@;
is( $@, q{}, 'validate_pos() call succeeded with regular params array and tied hashref spec' );
}
SKIP:
{
skip 'Params::Validate segfaults with tied hash for spec', 1;
tie my @p, 'Tie::SimpleArray';
tie my %spec, 'Tie::SimpleHash';
$spec{type} = SCALAR;
push @p, 'hello';
eval { validate_pos( @p, \%spec ) };
warn $@ if $@;
is( $@, q{}, 'validate_pos() call succeeded with tied params array and tied hashref spec' );
}
|