diff options
Diffstat (limited to 't/16-normalize.t')
-rw-r--r-- | t/16-normalize.t | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/t/16-normalize.t b/t/16-normalize.t new file mode 100644 index 0000000..1765312 --- /dev/null +++ b/t/16-normalize.t @@ -0,0 +1,71 @@ +use strict; +use warnings; + +use Params::Validate qw(validate validate_with); +use Test::More; + +my $ucfirst_normalizer = sub { return ucfirst lc $_[0] }; + +sub sub1 { + my %args = validate_with( + params => \@_, + spec => { PaRaMkEy => 1 }, + normalize_keys => $ucfirst_normalizer + ); + + return $args{Paramkey}; +} + +sub sub2 { + + # verify that normalize_callback surpresses ignore_case + my %args = validate_with( + params => \@_, + spec => { PaRaMkEy => 1 }, + normalize_keys => $ucfirst_normalizer, + ignore_case => 1 + ); + + return $args{Paramkey}; +} + +sub sub3 { + + # verify that normalize_callback surpresses strip_leading + my %args = validate_with( + params => \@_, + spec => { -PaRaMkEy => 1 }, + normalize_keys => $ucfirst_normalizer, + strip_leading => '-' + ); + + return $args{-paramkey}; +} + +sub sub4 { + my %args = validate_with( + params => \@_, + spec => { foo => 1 }, + normalize_keys => sub {undef} + ); +} + +sub sub5 { + my %args = validate_with( + params => \@_, + spec => { foo => 1 }, + normalize_keys => sub { return 'a' }, + ); +} + +ok( eval { sub1( pArAmKeY => 1 ) } ); +ok( eval { sub2( pArAmKeY => 1 ) } ); +ok( eval { sub3( -pArAmKeY => 1 ) } ); + +eval { sub4( foo => 5 ) }; +like( $@, qr/normalize_keys.+a defined value/ ); + +eval { sub5( foo => 5, bar => 5 ) }; +like( $@, qr/normalize_keys.+already exists/ ); + +done_testing(); |