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