summaryrefslogtreecommitdiff
path: root/t/release-pp-16-normalize.t
diff options
context:
space:
mode:
Diffstat (limited to 't/release-pp-16-normalize.t')
-rw-r--r--t/release-pp-16-normalize.t84
1 files changed, 84 insertions, 0 deletions
diff --git a/t/release-pp-16-normalize.t b/t/release-pp-16-normalize.t
new file mode 100644
index 0000000..de2a994
--- /dev/null
+++ b/t/release-pp-16-normalize.t
@@ -0,0 +1,84 @@
+
+
+use Test::More;
+
+BEGIN {
+ unless ( $ENV{RELEASE_TESTING} ) {
+ plan skip_all => 'these tests are for release testing';
+ }
+
+ $ENV{PV_TEST_PERL} = 1;
+}
+
+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();
+