X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F23-localize-ctl.t;h=b72be227f4a8ca94783e56af611df612761852e0;hb=eefb9e3f4b67e0aa0e8c3e705d7f7010a49f0540;hp=213df7f2fa99e2a67eb8a49da936658bbbfab5b6;hpb=0a6221d3f467b5f819e3c119b4cda0218399cb51;p=perl%2Fmodules%2FScope-Upper.git diff --git a/t/23-localize-ctl.t b/t/23-localize-ctl.t index 213df7f..b72be22 100644 --- a/t/23-localize-ctl.t +++ b/t/23-localize-ctl.t @@ -3,9 +3,9 @@ use strict; use warnings; -use Test::More tests => 44; +use Test::More tests => 44 + 30; -use Scope::Upper qw/localize UP HERE/; +use Scope::Upper qw; our ($x, $y); @@ -131,19 +131,19 @@ $y = undef; { local $x = 3; localize '$y' => 1 => UP UP UP UP; - is $x, 3, 'die - reap outside eval [not yet 1 - x]'; - is $y, undef, 'die - reap outside eval [not yet 1 - y]'; + is $x, 3, 'die - localize outside eval [not yet 1 - x]'; + is $y, undef, 'die - localize outside eval [not yet 1 - y]'; } - is $x, 2, 'die - reap outside eval [not yet 2 - x]'; - is $y, undef, 'die - reap outside eval [not yet 2 - y]'; + is $x, 2, 'die - localize outside eval [not yet 2 - x]'; + is $y, undef, 'die - localize outside eval [not yet 2 - y]'; die; } }; - is $x, 1, 'die - reap outside eval [not yet 3 - x]'; - is $y, undef, 'die - reap outside eval [not yet 3 - y]'; + is $x, 1, 'die - localize outside eval [not yet 3 - x]'; + is $y, undef, 'die - localize outside eval [not yet 3 - y]'; } # should trigger here - is $x, 1, 'die - reap outside eval [ok - x]'; - is $y, 1, 'die - reap outside eval [ok - y]'; + is $x, 1, 'die - localize outside eval [ok - x]'; + is $y, 1, 'die - localize outside eval [ok - y]'; } $y = undef; @@ -155,16 +155,16 @@ $y = undef; { local $x = 3; localize '$y' => 1 => UP UP UP; - is $x, 3, 'die - reap at eval [not yet 1 - x]'; - is $y, undef, 'die - reap at eval [not yet 1 - y]'; + is $x, 3, 'die - localize at eval [not yet 1 - x]'; + is $y, undef, 'die - localize at eval [not yet 1 - y]'; } - is $x, 2, 'die - reap at eval [not yet 2 - x]'; - is $y, undef, 'die - reap at eval [not yet 2 - y]'; + is $x, 2, 'die - localize at eval [not yet 2 - x]'; + is $y, undef, 'die - localize at eval [not yet 2 - y]'; die; } }; # should trigger here - is $x, 1, 'die - reap at eval [ok - x]'; - is $y, 1, 'die - reap at eval [ok - y]'; + is $x, 1, 'die - localize at eval [ok - x]'; + is $y, 1, 'die - localize at eval [ok - y]'; } $y = undef; @@ -176,14 +176,171 @@ $y = undef; { local $x = 3; localize '$y' => 1 => UP UP; - is $x, 3, 'die - reap inside eval [not yet 1 - x]'; - is $y, undef, 'die - reap inside eval [not yet 1 - y]'; + is $x, 3, 'die - localize inside eval [not yet 1 - x]'; + is $y, undef, 'die - localize inside eval [not yet 1 - y]'; } - is $x, 2, 'die - reap inside eval [not yet 2 - x]'; - is $y, undef, 'die - reap inside eval [not yet 2 - y]'; + is $x, 2, 'die - localize inside eval [not yet 2 - x]'; + is $y, undef, 'die - localize inside eval [not yet 2 - y]'; die; } # should trigger here }; - is $x, 1, 'die - reap inside eval [ok - x]'; - is $y, undef, 'die - reap inside eval [ok - y]'; + is $x, 1, 'die - localize inside eval [ok - x]'; + is $y, undef, 'die - localize inside eval [ok - y]'; +} + +SKIP: +{ + skip 'Perl 5.10 required to test given/when' => 30 if "$]" < 5.010; + + eval <<' GIVEN_TEST_1'; + BEGIN { + if ("$]" >= 5.017_011) { + require warnings; + warnings->unimport('experimental::smartmatch'); + } + } + use feature 'switch'; + local $y; + { + local $x = 1; + given (1) { + local $x = 2; + when (1) { + local $x = 3; + localize '$y' => 1 => UP UP; + is $x, 3, 'given/when - localize at given [not yet - x]'; + is $y, undef, 'given/when - localize at given [not yet - y]'; + } + fail 'not reached'; + } + is $x, 1, 'given/when - localize at given [ok - x]'; + is $y, 1, 'given/when - localize at given [ok - y]'; + } + GIVEN_TEST_1 + fail $@ if $@; + + eval <<' GIVEN_TEST_2'; + BEGIN { + if ("$]" >= 5.017_011) { + require warnings; + warnings->unimport('experimental::smartmatch'); + } + } + use feature 'switch'; + local $y; + { + local $x = 1; + given (1) { + local $x = 2; + when (1) { + local $x = 3; + localize '$y' => 1 => UP UP; + is $x, 3, 'given/when/continue - localize at given [not yet 1 - x]'; + is $y, undef, 'given/when/continue - localize at given [not yet 1 - y]'; + continue; + } + is $x, 2, 'given/when/continue - localize at given [not yet 2 - x]'; + is $y, undef, 'given/when/continue - localize at given [not yet 2 - y]'; + } + is $x, 1, 'given/when/continue - localize at given [ok - x]'; + is $y, 1, 'given/when/continue - localize at given [ok - y]'; + } + GIVEN_TEST_2 + fail $@ if $@; + + eval <<' GIVEN_TEST_3'; + BEGIN { + if ("$]" >= 5.017_011) { + require warnings; + warnings->unimport('experimental::smartmatch'); + } + } + use feature 'switch'; + local $y; + { + local $x = 1; + given (1) { + local $x = 2; + default { + local $x = 3; + localize '$y' => 1 => UP UP; + is $x, 3, 'given/default - localize at given [not yet - x]'; + is $y, undef, 'given/default - localize at given [not yet - y]'; + } + fail 'not reached'; + } + is $x, 1, 'given/default - localize at given [ok - x]'; + is $y, 1, 'given/default - localize at given [ok - y]'; + } + GIVEN_TEST_3 + fail $@ if $@; + + eval <<' GIVEN_TEST_4'; + BEGIN { + if ("$]" >= 5.017_011) { + require warnings; + warnings->unimport('experimental::smartmatch'); + } + } + use feature 'switch'; + local $y; + { + local $x = 1; + given (1) { + local $x = 2; + default { + local $x = 3; + localize '$y' => 1 => UP UP; + is $x, 3, 'given/default/continue - localize at given [not yet 1 - x]'; + is $y, undef, 'given/default/continue - localize at given [not yet 1 - y]'; + continue; + } + is $x, 2, 'given/default/continue - localize at given [not yet 2 - x]'; + is $y, undef, 'given/default/continue - localize at given [not yet 2 - y]'; + } + is $x, 1, 'given/default/continue - localize at given [ok - x]'; + is $y, 1, 'given/default/continue - localize at given [ok - y]'; + } + GIVEN_TEST_4 + fail $@ if $@; + + eval <<' GIVEN_TEST_5'; + BEGIN { + if ("$]" >= 5.017_011) { + require warnings; + warnings->unimport('experimental::smartmatch'); + } + } + use feature 'switch'; + local $y; + { + local $x = 1; + given (1) { + local $x = 2; + default { + local $x = 3; + given (2) { + local $x = 4; + when (2) { + local $x = 5; + localize '$y' => 1 => UP UP UP; + is $x, 5, 'given/default/given/when - localize at default [not yet 1 - x]'; + is $y, undef, 'given/default/given/when - localize at default [not yet 1 - y]'; + continue; + } + is $x, 4, 'given/default/given/when - localize at default [not yet 2 - x]'; + is $y, undef, 'given/default/given/when - localize at default [not yet 2 - y]'; + } + is $x, 3, 'given/default/given/when - localize at default [not yet 3 - x]'; + is $y, undef, 'given/default/given/when - localize at default [not yet 3 - y]'; + continue; + } + is $x, 2, 'given/default/given/when - localize at default [ok 1 - x]'; + is $y, 1, 'given/default/given/when - localize at default [ok 1 - y]'; + } + is $x, 1, 'given/default/given/when - localize at default [ok 2 - x]'; + is $y, undef, 'given/default/given/when - localize at default [ok 2 - y]'; + } + GIVEN_TEST_5 + fail $@ if $@; }