X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F20-localize-target.t;h=ba77ea88a62b6f7bf677435057de5b66359501d9;hb=e4175b0fdbe9a877f01c26f2b2a72aa977e75c98;hp=40d8f65b160c171afe5cf0d0bcd32e66f32af482;hpb=f1d34eeb61ec676615d9aafe69110af9b0dc302a;p=perl%2Fmodules%2FScope-Upper.git diff --git a/t/20-localize-target.t b/t/20-localize-target.t index 40d8f65..ba77ea8 100644 --- a/t/20-localize-target.t +++ b/t/20-localize-target.t @@ -3,7 +3,7 @@ use strict; use warnings; -use Test::More tests => 61 + 4; +use Test::More tests => 70 + 4; use Scope::Upper qw/localize UP HERE/; @@ -294,6 +294,43 @@ my $xh = { a => 5, c => 7 }; is foo(), 'x', 'localize *foo, sub { "y" } => UP [end]'; } +sub X::foo { 'X::foo' } + +{ + { + { + localize 'X::foo', sub { 'X::foo 2' } => UP; + is(X->foo, 'X::foo', 'localize "X::foo", sub { "X::foo 2" } => UP [not yet]') + } + is(X->foo, 'X::foo 2', 'localize "X::foo", sub { "X::foo 2" } => UP [ok]'); + } + is(X->foo, 'X::foo', 'localize "X::foo", sub { "X::foo 2" } => UP [end]'); +} + +@Y::ISA = 'X'; + +{ + { + { + localize 'X::foo', sub { 'X::foo 3' } => UP; + is(Y->foo, 'X::foo', 'localize "X::foo", sub { "X::foo 3" } => UP [not yet]') + } + is(Y->foo, 'X::foo 3', 'localize "X::foo", sub { "X::foo 3" } => UP [ok]'); + } + is(Y->foo, 'X::foo', 'localize "X::foo", sub { "X::foo 2" } => UP [end]'); +} + +{ + { + { + localize 'Y::foo', sub { 'Y::foo' } => UP; + is(Y->foo, 'X::foo', 'localize "Y::foo", sub { "Y::foo" } => UP [not yet]'); + } + is(Y->foo, 'Y::foo', 'localize "Y::foo", sub { "Y::foo" } => UP [ok]'); + } + is(Y->foo, 'X::foo', 'localize "Y::foo", sub { "Y::foo" } => UP [end]'); +} + # Invalid sub invalid_ref { qr/^Invalid \Q$_[0]\E reference as the localization target/ }