]> git.vpit.fr Git - perl/modules/Scope-Upper.git/blob - t/39-localize_elem-target.t
Add slice syntax to localize_{elem,delete}
[perl/modules/Scope-Upper.git] / t / 39-localize_elem-target.t
1 #!perl -T
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 22;
7
8 use Scope::Upper qw/localize_elem/;
9
10 # Arrays
11
12 our @a;
13
14 {
15  local @a = (4 .. 6);
16  {
17   localize_elem '@main::a', 1, 8, 0;
18   is_deeply \@a, [ 4, 8, 6 ], 'localize_elem "@a", 1, 8, 0 [ok]';
19  }
20  is_deeply \@a, [ 4 .. 6 ], 'localize_elem "@a", 1, 8, 0 [end]';
21 }
22
23 {
24  local @a = (4 .. 6);
25  {
26   localize_elem '@main::a', 4, 8, 0;
27   is_deeply \@a, [ 4 .. 6, undef, 8 ], 'localize_elem "@a", 4, 8, 0 [ok]';
28  }
29  is_deeply \@a, [ 4 .. 6 ], 'localize_elem "@a", 4, 8, 0 [end]';
30 }
31
32 {
33  local @a = (4 .. 6);
34  {
35   localize_elem '@main::a', [ 2, 4 ], [ 7, 8 ], 0;
36   is_deeply \@a, [ 4, 5, 7, undef, 8 ], 'localize_elem "@a", [ 2, 4 ], [ 7, 8 ], 0 [ok]';
37  }
38  is_deeply \@a, [ 4 .. 6 ], 'localize_elem "@a", [ 2, 4], [ 7, 8 ], 0 [end]';
39 }
40
41 {
42  local @a = (4 .. 6);
43  {
44   local @a = (5 .. 7);
45   {
46    localize_elem '@main::a', 1, 12, 1;
47    is_deeply \@a, [ 5 .. 7 ], 'localize_elem "@a", 1, 12, 1 [not yet]';
48   }
49   is_deeply \@a, [ 5, 12, 7 ], 'localize_elem "@a", 1, 12, 1 [ok]';
50  }
51  is_deeply \@a, [ 4 .. 6 ], 'localize_elem "@a", 1, 12, 1 [end]';
52 }
53
54 {
55  local @a = (4 .. 6);
56  {
57   local @a = (5 .. 7);
58   {
59    localize_elem '@main::a', 4, 12, 1;
60    is_deeply \@a, [ 5 .. 7 ], 'localize_elem "@a", 4, 12, 1 [not yet]';
61   }
62   is_deeply \@a, [ 5 .. 7, undef, 12 ], 'localize_elem "@a", 4, 12, 1 [ok]';
63  }
64  is_deeply \@a, [ 4 .. 6 ], 'localize_elem "@a", 4, 12, 1 [end]';
65 }
66
67 {
68  local @a = (4 .. 6);
69  {
70   local @a = (5 .. 7);
71   {
72    localize_elem '@main::a', [ 3, 4 ], [ 11, 12 ], 1;
73    is_deeply \@a, [ 5 .. 7 ], 'localize_elem "@a", [ 2, 4 ], [ 11, 12 ], 1 [not yet]';
74   }
75   is_deeply \@a, [ 5, 6, 7, 11, 12 ], 'localize_elem "@a", [ 2, 4 ], [ 11, 12 ], 1 [ok]';
76  }
77  is_deeply \@a, [ 4 .. 6 ], 'localize_elem "@a", [ 2, 4 ], [ 11, 12 ], 1 [end]';
78 }
79
80 # Hashes
81
82 our %h;
83
84 {
85  local %h = (a => 1, b => 2);
86  {
87   localize_elem '%main::h', 'a', 3, 0;
88   is_deeply \%h, { a => 3, b => 2 }, 'localize_elem "%h", "a", 3, 0 [ok]';
89  }
90  is_deeply \%h, { a => 1, b => 2 }, 'localize_elem "%h", "a", 3, 0 [end]';
91 }
92
93 {
94  local %h = (a => 1, b => 2);
95  {
96   localize_elem '%main::h', 'c', 3, 0;
97   is_deeply \%h, { a => 1, b => 2, c => 3 }, 'localize_elem "%h", "c", 3, 0 [ok]';
98  }
99  is_deeply \%h, { a => 1, b => 2 }, 'localize_elem "%h", "c", 3, 0 [end]';
100 }
101
102 {
103  local %h = (a => 1, b => 2);
104  {
105   local %h = (a => 3, c => 4);
106   {
107    localize_elem '%main::h', 'a', 5, 1;
108    is_deeply \%h, { a => 3, c => 4 }, 'localize_elem "%h", "a", 5, 1 [not yet]';
109   }
110   is_deeply \%h, { a => 5, c => 4 }, 'localize_elem "%h", "a", 5, 1 [ok]';
111  }
112  is_deeply \%h, { a => 1, b => 2 }, 'localize_elem "%h", "a", 5, 1 [end]';
113 }
114