]> git.vpit.fr Git - perl/modules/Variable-Temp.git/blob - t/13-magic.t
69d049ee5067c862bdd6217ba6c65c348292b7b5
[perl/modules/Variable-Temp.git] / t / 13-magic.t
1 #!perl
2
3 use strict;
4 use warnings;
5
6 use Variable::Temp 'set_temp';
7
8 use Test::More tests => 14;
9
10 use lib 't/lib';
11 use VPIT::TestHelpers;
12
13 load_or_skip_all('Variable::Magic', '0.55', undef);
14
15 my $replaced = 0;
16 my $freed    = 0;
17
18 my $wiz = Variable::Magic::wizard(
19  set  => sub { ++$replaced; () },
20  free => sub { ++$freed;    () },
21 );
22
23 {
24  my $y = 1;
25  &Variable::Magic::cast(\$y, $wiz);
26  is $y,        1;
27  is $replaced, 0;
28  is $freed,    0;
29
30  {
31   set_temp $y => 2;
32   is $y,        2;
33   is $replaced, 1;
34   is $freed,    0;
35
36   $y = 3;
37   is $y,        3;
38   is $replaced, 2;
39   is $freed,    0;
40  }
41
42  is $y,        1;
43  is $replaced, 3;
44  is $freed,    0;
45 }
46
47 is $replaced, 3;
48 is $freed,    1;