Commit | Line | Data |
a0cb3900 |
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..11\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 | memoize 'readfile', |
38 | SCALAR_CACHE => ['TIE', 'Memoize::ExpireFile', ], |
39 | LIST_CACHE => 'FAULT' |
40 | ; |
41 | |
42 | ++$n; print "ok $n\n"; |
43 | |
44 | writefile($FILE); |
45 | ++$n; print "ok $n\n"; |
46 | sleep 1; |
47 | |
48 | my $t1 = readfile($FILE); |
49 | ++$n; print "ok $n\n"; |
50 | ++$n; print ((($READFILE_CALLS == 1) ? '' : 'not '), "ok $n\n"); |
51 | |
52 | my $t2 = readfile($FILE); |
53 | ++$n; print "ok $n\n"; |
54 | ++$n; print ((($READFILE_CALLS == 1) ? '' : 'not '), "ok $n\n"); |
55 | ++$n; print ((($t1 eq $t2) ? '' : 'not '), "ok $n\n"); |
56 | |
57 | sleep 2; |
58 | writefile($FILE); |
59 | my $t3 = readfile($FILE); |
60 | ++$n; print "ok $n\n"; |
61 | ++$n; print ((($READFILE_CALLS == 2) ? '' : 'not '), "ok $n\n"); |
62 | ++$n; print ((($t1 ne $t3) ? '' : 'not '), "ok $n\n"); |
63 | |
64 | END { 1 while unlink 'TESTFILE' } |