]> git.vpit.fr Git - perl/modules/Variable-Temp.git/blob - t/21-lvalue-sub.t
This is 0.04
[perl/modules/Variable-Temp.git] / t / 21-lvalue-sub.t
1 #!perl
2
3 use strict;
4 use warnings;
5
6 use Variable::Temp 'temp';
7
8 use Test::More;
9
10 BEGIN {
11  if ("$]" >= 5.016) {
12   plan tests => 12;
13  } else {
14   plan skip_all => 'perl 5.16 required to have \$ proto accept sub entries';
15  }
16 }
17
18 {
19  package Variable::Temp::TestPkg;
20
21  sub new {
22   my ($class, $val) = @_;
23
24   bless { value => $val }, $class;
25  }
26
27  sub value :lvalue {
28   $_[0]->{value}
29  }
30
31  sub is_value {
32   my ($self, $expected, $desc) = @_;
33   ::is($self->{value}, $expected, $desc);
34  }
35 }
36
37 my $x = Variable::Temp::TestPkg->new(1);
38 $x->is_value(1);
39
40 {
41  temp $x->value = 2;
42  $x->is_value(2);
43 }
44
45 $x->is_value(1);
46
47 {
48  temp $x->value = 3;
49  $x->is_value(3);
50
51  temp $x->value = 4;
52  $x->is_value(4);
53 }
54
55 $x->is_value(1);
56
57 {
58  temp $x->value = 5;
59  $x->is_value(5);
60
61  {
62   temp $x->value = 6;
63   $x->is_value(6);
64  }
65
66  $x->is_value(5);
67 }
68
69 $x->is_value(1);
70
71 {
72  temp $x->value;
73  $x->is_value(undef);
74 }
75
76 $x->is_value(1);