Update to Scalar-List-Utils 1.08
[p5sagit/p5-mst-13.2.git] / ext / List / Util / t / refaddr.t
1 #!./perl
2
3 BEGIN {
4     unless (-d 'blib') {
5         chdir 't' if -d 't';
6         @INC = '../lib';
7         require Config; import Config;
8         keys %Config; # Silence warning
9         if ($Config{extensions} !~ /\bList\/Util\b/) {
10             print "1..0 # Skip: List::Util was not built\n";
11             exit 0;
12         }
13     }
14 }
15
16
17 use Scalar::Util qw(refaddr);
18 use vars qw($t $y $x *F $v $r);
19 use Symbol qw(gensym);
20
21 # Ensure we do not trigger and tied methods
22 tie *F, 'MyTie';
23
24 print "1..13\n";
25
26 my $i = 1;
27 foreach $v (undef, 10, 'string') {
28   print "not " if defined refaddr($v);
29   print "ok ",$i++,"\n";
30 }
31
32 foreach $r ({}, \$t, [], \*F, sub {}) {
33   my $addr = $r + 0;
34   print "not " unless refaddr($r) == $addr;
35   print "ok ",$i++,"\n";
36   my $obj = bless $r, 'FooBar';
37   print "not " unless refaddr($r) == $addr;
38   print "ok ",$i++,"\n";
39 }
40
41 package FooBar;
42
43 use overload  '0+' => sub { 10 },
44                 '+' => sub { 10 + $_[1] };
45
46 package MyTie;
47
48 sub TIEHANDLE { bless {} }
49 sub DESTROY {}
50
51 sub AUTOLOAD {
52   warn "$AUTOLOAD called";
53   exit 1; # May be in an eval
54 }