X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F13-reap-ctl.t;h=210b5b5de4c631143f29b83ac2870bf8b4b2739d;hb=c8997e4a75e935854f13e100fdcbc222978c1211;hp=7ec492a9906c8ffac3d06ad2943533be88c48d0e;hpb=51697dfaf719db3a540a2c8eb5e98ced6a5c6142;p=perl%2Fmodules%2FScope-Upper.git diff --git a/t/13-reap-ctl.t b/t/13-reap-ctl.t index 7ec492a..210b5b5 100644 --- a/t/13-reap-ctl.t +++ b/t/13-reap-ctl.t @@ -3,7 +3,7 @@ use strict; use warnings; -use Test::More tests => 38 + 4 * 7; +use Test::More tests => 38 + 30 + 4 * 7; use Scope::Upper qw/reap UP HERE/; @@ -122,6 +122,133 @@ $y = undef; is $y, 1, 'die - reap inside eval [ok - y]'; } +SKIP: +{ + skip 'Perl 5.10 required to test given/when' => 30 if $] < 5.010; + + eval <<' GIVEN_TEST_1'; + use feature 'switch'; + local $y; + { + local $x = 1; + given (1) { + local $x = 2; + when (1) { + local $x = 3; + reap \&check => UP; + is $x, 3, 'given/when - reap at given [not yet - x]'; + is $y, undef, 'given/when - reap at given [not yet - y]'; + } + fail 'not reached'; + } + is $x, 1, 'given/when - reap at given [ok - x]'; + is $y, 1, 'given/when - reap at given [ok - y]'; + } + GIVEN_TEST_1 + fail $@ if $@; + + eval <<' GIVEN_TEST_2'; + use feature 'switch'; + local $y; + { + local $x = 1; + given (1) { + local $x = 2; + when (1) { + local $x = 3; + reap \&check => UP; + is $x, 3, 'given/when/continue - reap at given [not yet 1 - x]'; + is $y, undef, 'given/when/continue - reap at given [not yet 1 - y]'; + continue; + } + is $x, 2, 'given/when/continue - reap at given [not yet 2 - x]'; + is $y, undef, 'given/when/continue - reap at given [not yet 2 - y]'; + } + is $x, 1, 'given/when/continue - reap at given [ok - x]'; + is $y, 1, 'given/when/continue - reap at given [ok - y]'; + } + GIVEN_TEST_2 + fail $@ if $@; + + eval <<' GIVEN_TEST_3'; + use feature 'switch'; + local $y; + { + local $x = 1; + given (1) { + local $x = 2; + default { + local $x = 3; + reap \&check => UP; + is $x, 3, 'given/default - reap at given [not yet - x]'; + is $y, undef, 'given/default - reap at given [not yet - y]'; + } + fail 'not reached'; + } + is $x, 1, 'given/default - reap at given [ok - x]'; + is $y, 1, 'given/default - reap at given [ok - y]'; + } + GIVEN_TEST_3 + fail $@ if $@; + + eval <<' GIVEN_TEST_4'; + use feature 'switch'; + local $y; + { + local $x = 1; + given (1) { + local $x = 2; + default { + local $x = 3; + reap \&check => UP; + is $x, 3, 'given/default/continue - reap at given [not yet 1 - x]'; + is $y, undef, 'given/default/continue - reap at given [not yet 1 - y]'; + continue; + } + is $x, 2, 'given/default/continue - reap at given [not yet 2 - x]'; + is $y, undef, 'given/default/continue - reap at given [not yet 2 - y]'; + } + is $x, 1, 'given/default/continue - reap at given [ok - x]'; + is $y, 1, 'given/default/continue - reap at given [ok - y]'; + } + GIVEN_TEST_4 + fail $@ if $@; + + eval <<' GIVEN_TEST_5'; + 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; + reap \&check => UP UP; + is $x, 5, 'given/default/given/when - reap at default [not yet 1 - x]'; + is $y, undef, 'given/default/given/when - reap at default [not yet 1 - y]'; + continue; + } + is $x, 4, 'given/default/given/when - reap at default [not yet 2 - x]'; + is $y, undef, 'given/default/given/when - reap at default [not yet 2 - y]'; + } + is $x, 3, 'given/default/given/when - reap at default [not yet 3 - x]'; + is $y, undef, 'given/default/given/when - reap at default [not yet 3 - y]'; + continue; + } + is $x, 2, 'given/default/given/when - reap at default [ok 1 - x]'; + is $y, 1, 'given/default/given/when - reap at default [ok 1 - y]'; + } + is $x, 1, 'given/default/given/when - reap at default [ok 2 - x]'; + is $y, 1, 'given/default/given/when - reap at default [ok 2 - y]'; + } + GIVEN_TEST_5 + fail $@ if $@; +} + $y = undef; { local $x = 1;