Commit | Line | Data |
a0cb3900 |
1 | #!/usr/bin/perl |
2 | |
5189e6fe |
3 | use lib '..'; |
a0cb3900 |
4 | use Memoize; |
5 | |
6 | my $n = 0; |
7 | |
8 | |
9 | if (-e '.fast') { |
10 | print "1..0\n"; |
11 | exit 0; |
12 | } |
13 | |
899dc88a |
14 | print "1..12\n"; |
a0cb3900 |
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; |
5189e6fe |
31 | open F, "< $FILE" or die "Couldn't write temporary file $FILE: $!"; |
a0cb3900 |
32 | my $data = <F>; |
33 | close F; |
34 | $data; |
35 | } |
36 | |
899dc88a |
37 | require Memoize::ExpireFile; |
38 | ++$n; print "ok $n\n"; |
39 | |
40 | tie my %cache => 'Memoize::ExpireFile'; |
a0cb3900 |
41 | memoize 'readfile', |
899dc88a |
42 | SCALAR_CACHE => [HASH => \%cache], |
a0cb3900 |
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 | |
5189e6fe |
61 | sleep 2; |
a0cb3900 |
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 | |
899dc88a |
68 | END { 1 while unlink $FILE } |