Lots of spring cleaning. (No functional changes.)
[p5sagit/p5-mst-13.2.git] / ext / Storable / t / tied_items.t
1 #!./perl
2
3 # $Id: tied_items.t,v 1.0 2000/09/01 19:40:42 ram Exp $
4 #
5 #  Copyright (c) 1995-2000, Raphael Manfredi
6 #  
7 #  You may redistribute only under the same terms as Perl 5, as specified
8 #  in the README file that comes with the distribution.
9 #
10
11 #
12 # Tests ref to items in tied hash/array structures.
13 #
14
15 sub BEGIN {
16     if ($ENV{PERL_CORE}){
17         chdir('t') if -d 't';
18         @INC = ('.', '../lib', '../ext/Storable/t');
19     } else {
20         unshift @INC, 't';
21     }
22     require Config; import Config;
23     if ($ENV{PERL_CORE} and $Config{'extensions'} !~ /\bStorable\b/) {
24         print "1..0 # Skip: Storable was not built\n";
25         exit 0;
26     }
27     require 'st-dump.pl';
28 }
29
30 sub ok;
31 $^W = 0;
32
33 print "1..8\n";
34
35 use Storable qw(dclone);
36
37 $h_fetches = 0;
38
39 sub H::TIEHASH { bless \(my $x), "H" }
40 sub H::FETCH { $h_fetches++; $_[1] - 70 }
41
42 tie %h, "H";
43
44 $ref = \$h{77};
45 $ref2 = dclone $ref;
46
47 ok 1, $h_fetches == 0;
48 ok 2, $$ref2 eq $$ref;
49 ok 3, $$ref2 == 7;
50 ok 4, $h_fetches == 2;
51
52 $a_fetches = 0;
53
54 sub A::TIEARRAY { bless \(my $x), "A" }
55 sub A::FETCH { $a_fetches++; $_[1] - 70 }
56
57 tie @a, "A";
58
59 $ref = \$a[78];
60 $ref2 = dclone $ref;
61
62 ok 5, $a_fetches == 0;
63 ok 6, $$ref2 eq $$ref;
64 ok 7, $$ref2 == 8;
65 # I don't understand why it's 3 and not 2
66 ok 8, $a_fetches == 3;