X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F30-localize_elem-target.t;h=5db7d0b808c5227b5884174158c0e994ad02c835;hb=965e21f781c23f8c20242d17d7db745d8c035eb3;hp=273eb0d632df4a6af806fc7cc8a48f33605eab6d;hpb=2315578c2990170a7aad20f8a15f715e4b2be5ef;p=perl%2Fmodules%2FScope-Upper.git diff --git a/t/30-localize_elem-target.t b/t/30-localize_elem-target.t index 273eb0d..5db7d0b 100644 --- a/t/30-localize_elem-target.t +++ b/t/30-localize_elem-target.t @@ -3,7 +3,7 @@ use strict; use warnings; -use Test::More tests => 25; +use Test::More tests => 25 + 8; use Scope::Upper qw/localize_elem UP HERE/; @@ -127,3 +127,62 @@ our %h; is_deeply eval('*nonexistent{HASH}'), { }, 'localize_elem "%nonexistent", "a", 13 => HERE [end]'; } + +my $invalid_glob = qr/^Can't infer the element localization type from a glob and the value/; +my $invalid_type = qr/^Can't localize an element of something that isn't an array or a hash/; + +{ + local *x; + + eval { localize_elem '$x', 0, 1 }; + like $@, $invalid_type, 'invalid localize_elem "$x", 0, 1'; +} + +{ + local *x; + + eval { localize_elem '&x', 0, sub { } }; + like $@, $invalid_type, 'invalid localize_elem "&x", 0, sub { }'; +} + +{ + local *x; + + eval { localize_elem '*x', 0, \1 }; + like $@, $invalid_type, 'invalid localize_elem "*x", 0, \1'; +} + +{ + local *x; + + eval { localize_elem *x, 0, \1 }; + like $@, $invalid_glob, 'invalid localize_elem *x, 0, \1'; +} + +{ + local *x; + + eval { localize_elem *x, 0, [ 1 ] }; + like $@, $invalid_glob, 'invalid localize_elem *x, 0, [ 1 ]'; +} + +{ + local *x; + + eval { localize_elem *x, 0, { a => 1 } }; + like $@, $invalid_glob, 'invalid localize_elem *x, 0, { a => 1 }'; +} + +{ + local *x; + + eval { localize_elem *x, 0, sub { } }; + like $@, $invalid_glob, 'invalid localize_elem *x, 0, sub { }'; +} + +{ + local *x; + + eval { localize_elem *x, 0, *x }; + like $@, $invalid_glob, 'invalid localize_elem *x, 0, *x'; +}