Upgrade to ExtUtils::MakeMaker 6.28
[p5sagit/p5-mst-13.2.git] / lib / Memoize / t / expfile.t
CommitLineData
a0cb3900 1#!/usr/bin/perl
2
5189e6fe 3use lib '..';
a0cb3900 4use Memoize;
5
6my $n = 0;
484fdf61 7$|=1;
a0cb3900 8
9
10if (-e '.fast') {
11 print "1..0\n";
12 exit 0;
13}
14
899dc88a 15print "1..12\n";
484fdf61 16# (1)
a0cb3900 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;
5189e6fe 32 open F, "< $FILE" or die "Couldn't write temporary file $FILE: $!";
a0cb3900 33 my $data = <F>;
34 close F;
35 $data;
36}
37
899dc88a 38require Memoize::ExpireFile;
484fdf61 39# (2)
899dc88a 40++$n; print "ok $n\n";
41
42tie my %cache => 'Memoize::ExpireFile';
a0cb3900 43memoize 'readfile',
899dc88a 44 SCALAR_CACHE => [HASH => \%cache],
a0cb3900 45 LIST_CACHE => 'FAULT'
46 ;
47
484fdf61 48# (3)
a0cb3900 49++$n; print "ok $n\n";
50
484fdf61 51# (4)
a0cb3900 52writefile($FILE);
53++$n; print "ok $n\n";
484fdf61 54sleep 4;
a0cb3900 55
484fdf61 56# (5-6)
a0cb3900 57my $t1 = readfile($FILE);
58++$n; print "ok $n\n";
59++$n; print ((($READFILE_CALLS == 1) ? '' : 'not '), "ok $n\n");
60
484fdf61 61# (7-9)
a0cb3900 62my $t2 = readfile($FILE);
484fdf61 63++$n; print "ok $n\n";
a0cb3900 64++$n; print ((($READFILE_CALLS == 1) ? '' : 'not '), "ok $n\n");
65++$n; print ((($t1 eq $t2) ? '' : 'not '), "ok $n\n");
66
484fdf61 67# (10-12)
68sleep 4;
a0cb3900 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
899dc88a 75END { 1 while unlink $FILE }