#!perl -w use strict; use Test::More; use Data::Validator; my $v = Data::Validator->new( foo => { }, )->with('AllowExtra'); my($args, %extra) = $v->validate( foo => 42, bar => 15 ); is_deeply $args, { foo => 42 }, 'args'; is_deeply \%extra, { bar => 15 }, 'extra' or diag(explain(\%extra)); ($args, %extra) = $v->validate( bar => 15, foo => 42 ); is_deeply $args, { foo => 42 }, 'reversed order'; is_deeply \%extra, { bar => 15 }; $v = Data::Validator->new( foo => { }, )->with('AllowExtra', 'Method'); (my $self, $args, %extra) = $v->validate('MyClass', foo => 42, bar => 15 ); is $self, 'MyClass', 'with Method'; is_deeply $args, { foo => 42 }; is_deeply \%extra, { bar => 15 }; ($self, $args, %extra) = $v->validate('MyClass', bar => 15, foo => 42 ); is $self, 'MyClass', 'reversed order'; is_deeply $args, { foo => 42 }; is_deeply \%extra, { bar => 15 }; $v = Data::Validator->new( foo => { }, )->with('Sequenced', 'AllowExtra'); ($args, %extra) = $v->validate(42); is_deeply $args, { foo => 42 }; is_deeply \%extra, { }; ($args, %extra) = $v->validate(42, { bar => 15 }); is_deeply $args, { foo => 42 }; is_deeply \%extra, { bar => 15 }; ($args, %extra) = $v->validate( 10, 20, 30 ); is_deeply $args, { foo => 10 }; is_deeply \%extra, { '[1]' => 20, '[2]' => 30 }; done_testing;