]> git.vpit.fr Git - perl/modules/Variable-Temp.git/blob - t/15-lvalue-sub.t
Test applying temp() to lvalue subs
[perl/modules/Variable-Temp.git] / t / 15-lvalue-sub.t
1 #!perl
2
3 use strict;
4 use warnings;
5
6 use Variable::Temp 'temp';
7
8 use Test::More tests => 10;
9
10 {
11  package Variable::Temp::TestPkg;
12
13  sub new {
14   my ($class, $val) = @_;
15
16   bless { value => $val }, $class;
17  }
18
19  sub value :lvalue {
20   $_[0]->{value}
21  }
22
23  sub is_value {
24   my ($self, $expected, $desc) = @_;
25   ::is($self->{value}, $expected, $desc);
26  }
27 }
28
29 my $x = Variable::Temp::TestPkg->new(1);
30 $x->is_value(1);
31
32 {
33  temp $x->value = 2;
34  $x->is_value(2);
35 }
36
37 $x->is_value(1);
38
39 {
40  temp $x->value = 3;
41  $x->is_value(3);
42
43  temp $x->value = 4;
44  $x->is_value(4);
45 }
46
47 $x->is_value(1);
48
49 {
50  temp $x->value = 5;
51  $x->is_value(5);
52
53  {
54   temp $x->value = 6;
55   $x->is_value(6);
56  }
57
58  $x->is_value(5);
59 }
60
61 $x->is_value(1);