X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2Flib%2Fautovivification%2FTestCases.pm;h=13feb5a6c784561786d99cb7911aa64be366f27b;hb=68e31f8ce73ddedf82977b4e05ec550c1cfe5688;hp=99d6672a2984d6cc51494108e7998371cd2da4a1;hpb=167a7d1ceb42868217cdc88690f5d565527b3d6c;p=perl%2Fmodules%2Fautovivification.git diff --git a/t/lib/autovivification/TestCases.pm b/t/lib/autovivification/TestCases.pm index 99d6672..13feb5a 100644 --- a/t/lib/autovivification/TestCases.pm +++ b/t/lib/autovivification/TestCases.pm @@ -41,9 +41,11 @@ TESTCASE sub testcase_ok { local $_ = shift; my $sigil = shift; + my @chunks = split /#+/, "$_ "; s/^\s+//, s/\s+$// for @chunks; my ($init, $code, $exp, $opts) = @chunks; + (my $var = $init) =~ s/[^\$@%\w].*//; $init = $var eq $init ? '' : "$init;"; my $use; @@ -60,15 +62,19 @@ sub testcase_ok { $opts = 'default'; $use = ''; } + my @base = ([ $var, $init, $code, $exp, $use ]); if ($var =~ /\$/) { + my ($name) = $var =~ /^\$(.*)/; + my @oldderef = @{$base[0]}; $oldderef[2] =~ s/\Q$var\E\->/\$$var/g; push @base, \@oldderef; my @nonref = @{$base[0]}; - $nonref[0] =~ s/^\$/$sigil/; + $nonref[0] = $sigil . $name; for ($nonref[1], $nonref[2]) { + s/\@\Q$var\E([\[\{])/\@$name$1/g; s/\Q$sigil$var\E/$nonref[0]/g; s/\Q$var\E\->/$var/g; } @@ -87,12 +93,14 @@ sub testcase_ok { $nonref[3] =~ s/,\s*undef\s*$/, $empty/; push @base, \@nonref; } + my @testcases = map { my ($var, $init, $code, $exp, $use) = @$_; [ $var, $init, $code, $exp, $use, $opts, 0 ], [ $var, "use strict; $init", $code, $exp, $use, $opts, 1 ], [ $var, "no strict; $init", $code, $exp, $use, $opts, 1 ], } @base; + for (@testcases) { my ($testcase, $desc) = generate(@$_); my @N = (0 .. 9);