X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2Fautovivification.git;a=blobdiff_plain;f=t%2F44-multideref.t;h=b19b8ce1af8b338fe7150f8217a97c83bb3b5b7c;hp=954b069ccae7b6577e878f2d0ed56fccb74b0dad;hb=f272f375c8bc23ea4a0ba73742bb878af622b9a6;hpb=87286831234d1bff560036f1ae04f7924704073c diff --git a/t/44-multideref.t b/t/44-multideref.t index 954b069..b19b8ce 100644 --- a/t/44-multideref.t +++ b/t/44-multideref.t @@ -4,14 +4,17 @@ use strict; use warnings; use lib 't/lib'; -use Test::Leaner tests => 3 * 4 * (8 ** 3) * 2; +use Test::Leaner tests => 4 * 4 * (8 ** 3) * 2; my $depth = 3; +my $magic_val = 123; + my @prefixes = ( - '', - 'exists ', - 'delete ', + sub { $_[0] }, + sub { "$_[0] = $magic_val" }, + sub { "exists $_[0]" }, + sub { "delete $_[0]" }, ); my (@vlex, %vlex, $vrlex); @@ -87,11 +90,14 @@ sub reset_vars { } } -my $iterator = autovivification::TestIterator->new(3, 4, (8) x $depth); +my $iterator = autovivification::TestIterator->new(4, 4, (8) x $depth); do { - my @elems = $iterator->pick(\@prefixes, \@heads, (\@derefs) x $depth); - my $code = join '', @elems; - my $exp = $elems[0] eq 'exists ' ? !1 : undef; + my ($prefix, @elems) + = $iterator->pick(\@prefixes, \@heads, (\@derefs) x $depth); + my $code = $prefix->(join '', @elems); + my $exp = ($code =~ /^\s*exists/) ? !1 + : (($code =~ /=\s*$magic_val/) ? $magic_val + : undef); reset_vars(); my ($res, $err) = do { local $SIG{__WARN__} = sub { die @_ };