]> git.vpit.fr Git - perl/modules/Variable-Temp.git/blobdiff - t/15-lvalue-sub.t
Test applying temp() to lvalue subs
[perl/modules/Variable-Temp.git] / t / 15-lvalue-sub.t
diff --git a/t/15-lvalue-sub.t b/t/15-lvalue-sub.t
new file mode 100644 (file)
index 0000000..baae5e4
--- /dev/null
@@ -0,0 +1,61 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Variable::Temp 'temp';
+
+use Test::More tests => 10;
+
+{
+ package Variable::Temp::TestPkg;
+
+ sub new {
+  my ($class, $val) = @_;
+
+  bless { value => $val }, $class;
+ }
+
+ sub value :lvalue {
+  $_[0]->{value}
+ }
+
+ sub is_value {
+  my ($self, $expected, $desc) = @_;
+  ::is($self->{value}, $expected, $desc);
+ }
+}
+
+my $x = Variable::Temp::TestPkg->new(1);
+$x->is_value(1);
+
+{
+ temp $x->value = 2;
+ $x->is_value(2);
+}
+
+$x->is_value(1);
+
+{
+ temp $x->value = 3;
+ $x->is_value(3);
+
+ temp $x->value = 4;
+ $x->is_value(4);
+}
+
+$x->is_value(1);
+
+{
+ temp $x->value = 5;
+ $x->is_value(5);
+
+ {
+  temp $x->value = 6;
+  $x->is_value(6);
+ }
+
+ $x->is_value(5);
+}
+
+$x->is_value(1);