#!/usr/bin/perl -w
use strict;
use Test::More tests => 5;
use Test::Exception;
use Data::Bind;
sub {
# my sub foo(*@a; *@b) { }
my $foo = sub { my (@a,@b); Data::Bind->arg_bind(\@_);
map { $a[$_] + $b[$_] } 0..$#a;
};
Data::Bind->sub_signature
($foo,
[ { var => '@a', is_slurpy => 1 } ],
[ { var => '@b', is_slurpy => 1 } ],
);
my @array = <1 2 3>;
my @array2 = <4 5 6>;
my @ret = $foo->([\@array], {}, [\@array2], {});
is_deeply \@ret, [5,7,9];
}->();
sub {
# my sub foo(*@@args) { }
my $foo = sub { my @args; Data::Bind->arg_bind(\@_);
is($#args, 1);
is_deeply($args[0][0], []);
is(${$args[0]->{orz}}, 2);
is(${$args[1][0]}, 'b');;
};
Data::Bind->sub_signature
($foo, { var => '@args', is_multidimension => 1 }),
my @array = ;
my $var = "d";
bind_op2(\$array[1] => \$var);
$foo->([\@array], { orz => \2}, [\'b', \'x'], {});
}->();
## XXX: test for wrong dimension