xref: /onnv-gate/usr/src/cmd/perl/5.8.4/distrib/lib/Memoize/t/expfile.t (revision 0:68f95e015346)
1#!/usr/bin/perl
2
3use lib '..';
4use Memoize;
5
6my $n = 0;
7$|=1;
8
9
10if (-e '.fast') {
11  print "1..0\n";
12  exit 0;
13}
14
15print "1..12\n";
16# (1)
17++$n; print "ok $n\n";
18
19my $READFILE_CALLS = 0;
20my $FILE = './TESTFILE';
21
22sub writefile {
23  my $FILE = shift;
24  open F, "> $FILE" or die "Couldn't write temporary file $FILE: $!";
25  print F scalar(localtime), "\n";
26  close F;
27}
28
29sub readfile {
30  $READFILE_CALLS++;
31  my $FILE = shift;
32  open F, "< $FILE" or die "Couldn't write temporary file $FILE: $!";
33  my $data = <F>;
34  close F;
35  $data;
36}
37
38require Memoize::ExpireFile;
39# (2)
40++$n; print "ok $n\n";
41
42tie my %cache => 'Memoize::ExpireFile';
43memoize 'readfile',
44    SCALAR_CACHE => [HASH => \%cache],
45    LIST_CACHE => 'FAULT'
46    ;
47
48# (3)
49++$n; print "ok $n\n";
50
51# (4)
52writefile($FILE);
53++$n; print "ok $n\n";
54sleep 4;
55
56# (5-6)
57my $t1 = readfile($FILE);
58++$n; print "ok $n\n";
59++$n; print ((($READFILE_CALLS == 1) ? '' : 'not '), "ok $n\n");
60
61# (7-9)
62my $t2 = readfile($FILE);
63++$n; print "ok $n\n";
64++$n; print ((($READFILE_CALLS == 1) ? '' : 'not '), "ok $n\n");
65++$n; print ((($t1 eq $t2) ? '' : 'not '), "ok $n\n");
66
67# (10-12)
68sleep 4;
69writefile($FILE);
70my $t3 = readfile($FILE);
71++$n; print "ok $n\n";
72++$n; print ((($READFILE_CALLS == 2) ? '' : 'not '), "ok $n\n");
73++$n; print ((($t1 ne $t3) ? '' : 'not '), "ok $n\n");
74
75END { 1 while unlink $FILE }
76