]> git.vpit.fr Git - perl/modules/Scope-Upper.git/blobdiff - t/39-localize_elem-target.t
The 5.6 failure was actually a compile-time error, so wrap the faulty test in an...
[perl/modules/Scope-Upper.git] / t / 39-localize_elem-target.t
index 6a8340754c2ace181ee3531e0a6ee1b7e5c9b17d..fe538e40ddb7ff92cfb6be93982f0cfcee2d114f 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 14;
+use Test::More tests => 21;
 
 use Scope::Upper qw/localize_elem/;
 
@@ -26,7 +26,25 @@ our @a;
   localize_elem '@main::a', 4, 8, 0;
   is_deeply \@a, [ 4 .. 6, undef, 8 ], 'localize_elem "@a", 4, 8, 0 [ok]';
  }
- is_deeply \@a, [ 4 .. 6, undef, undef ], 'localize_elem "@a", 4, 8, 0 [end]';
+ is_deeply \@a, [ 4 .. 6 ], 'localize_elem "@a", 4, 8, 0 [end]';
+}
+
+{
+ local @a = (4 .. 6);
+ {
+  localize_elem '@main::a', -2, 8, 0;
+  is_deeply \@a, [ 4, 8, 6 ], 'localize_elem "@a", -2, 8, 0 [ok]';
+ }
+ is_deeply \@a, [ 4 .. 6 ], 'localize_elem "@a", -2, 8, 0 [end]';
+}
+
+{
+ local @a = (4 .. 6);
+ {
+  eval { localize_elem '@main::a', -4, 8, 0 };
+  like $@, qr/Modification of non-creatable array value attempted, subscript -4/, 'localize_elem "@a", -4, 8, 0 [ok]';
+ }
+ is_deeply \@a, [ 4 .. 6 ], 'localize_elem "@a", -4, 8, 0 [end]';
 }
 
 {
@@ -42,6 +60,19 @@ our @a;
  is_deeply \@a, [ 4 .. 6 ], 'localize_elem "@a", 1, 12, 1 [end]';
 }
 
+{
+ local @a = (4 .. 6);
+ {
+  local @a = (5 .. 7);
+  {
+   localize_elem '@main::a', 4, 12, 1;
+   is_deeply \@a, [ 5 .. 7 ], 'localize_elem "@a", 4, 12, 1 [not yet]';
+  }
+  is_deeply \@a, [ 5 .. 7, undef, 12 ], 'localize_elem "@a", 4, 12, 1 [ok]';
+ }
+ is_deeply \@a, [ 4 .. 6 ], 'localize_elem "@a", 4, 12, 1 [end]';
+}
+
 # Hashes
 
 our %h;