1use strict;
2use warnings;
3use Test::More;
4
5use Params::Validate qw( validate SCALAR );
6
7{
8    my $p = { foo => 1 };
9
10    val($p);
11
12    is_deeply(
13        $p, { foo => 1 },
14        'validate does not alter hashref passed to val'
15    );
16
17    val2($p);
18
19    is_deeply(
20        $p, { foo => 1 },
21        'validate does not alter hashref passed to val, even with defaults being supplied'
22    );
23}
24
25sub val {
26    validate(
27        @_, {
28            foo => { optional => 1 },
29            bar => { optional => 1 },
30            baz => { optional => 1 },
31            buz => { optional => 1 },
32        },
33    );
34
35    return;
36}
37
38sub val2 {
39    validate(
40        @_, {
41            foo => { optional => 1 },
42            bar => { default  => 42 },
43            baz => { optional => 1 },
44            buz => { optional => 1 },
45        },
46    );
47
48    return;
49}
50
51done_testing();
52