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