6 use Test::More tests => 30;
8 use Scope::Upper qw/localize_delete/;
17 localize_delete '@main::a', 1, 0;
18 is_deeply \@a, [ 4, undef, 6 ], 'localize_delete "@a", 1, 0 [ok]';
20 is_deeply \@a, [ 4 .. 6 ], 'localize_delete "@a", 1, 0 [end]';
26 localize_delete '@main::a', 4, 0;
27 is_deeply \@a, [ 4 .. 6 ], 'localize_delete "@a", 4 (nonexistent), 0 [ok]';
29 is_deeply \@a, [ 4 .. 6 ], 'localize_delete "@a", 4 (nonexistent), 0 [end]';
36 localize_delete '@main::a', 4, 0;
37 is_deeply \@a, [ 4 .. 6 ], 'localize_delete "@a", 4 (exists), 0 [ok]';
39 is_deeply \@a, [ 4 .. 6, undef, 7 ], 'localize_delete "@a", 4 (exists), 0 [end]';
47 localize_delete '@main::a', 1, 1;
48 is_deeply \@a, [ 5 .. 7 ], 'localize_delete "@a", 1, 1 [not yet]';
50 is_deeply \@a, [ 5, undef, 7 ], 'localize_delete "@a", 1, 1 [ok]';
52 is_deeply \@a, [ 4 .. 6 ], 'localize_delete "@a", 1, 1 [end]';
60 localize_delete '@main::a', 4, 1;
61 is_deeply \@a, [ 5 .. 7 ], 'localize_delete "@a", 4 (nonexistent), 1 [not yet]';
63 is_deeply \@a, [ 5 .. 7 ], 'localize_delete "@a", 4 (nonexistent), 1 [ok]';
65 is_deeply \@a, [ 4 .. 6 ], 'localize_delete "@a", 4 (nonexistent), 1 [end]';
74 localize_delete '@main::a', 4, 1;
75 is_deeply \@a, [ 5 .. 7, undef, 8 ], 'localize_delete "@a", 4 (exists), 1 [not yet]';
77 is_deeply \@a, [ 5 .. 7 ], 'localize_delete "@a", 4 (exists), 1 [ok]';
79 is_deeply \@a, [ 4 .. 6 ], 'localize_delete "@a", 4 (exists), 1 [end]';
87 local %h = (a => 1, b => 2);
89 localize_delete '%main::h', 'a', 0;
90 is_deeply \%h, { b => 2 }, 'localize_delete "%h", "a", 0 [ok]';
92 is_deeply \%h, { a => 1, b => 2 }, 'localize_delete "%h", "a", 0 [end]';
96 local %h = (a => 1, b => 2);
98 localize_delete '%main::h', 'c', 0;
99 is_deeply \%h, { a => 1, b => 2 }, 'localize_delete "%h", "c", 0 [ok]';
101 is_deeply \%h, { a => 1, b => 2 }, 'localize_delete "%h", "c", 0 [end]';
105 local %h = (a => 1, b => 2);
107 local %h = (a => 3, c => 4);
109 localize_delete '%main::h', 'a', 1;
110 is_deeply \%h, { a => 3, c => 4 }, 'localize_delete "%h", "a", 1 [not yet]';
112 is_deeply \%h, { c => 4 }, 'localize_delete "%h", "a", 1 [ok]';
114 is_deeply \%h, { a => 1, b => 2 }, 'localize_delete "%h", "a", 1 [end]';
121 localize_delete '$x', 2, 0;
122 is $x, undef, 'localize "$x", anything, 0 [ok]';
124 is $x, 1, 'localize "$x", anything, 0 [end]';
128 localize_delete '&x', 2, 0;
129 ok !exists(&x), 'localize "&x", anything, 0 [ok]';
131 is x(), 1, 'localize "&x", anything, 0 [end]';
134 localize_delete *x, sub { }, 0;
135 is !exists(&x), 1, 'localize *x, anything, 0 [ok 1]';
136 is !defined($x), 1, 'localize *x, anything, 0 [ok 2]';
138 is x(), 1, 'localize *x, anything, 0 [end 1]';
139 is $x, 1, 'localize *x, anything, 0 [end 2]';