Commit | Line | Data |
a0cb3900 |
1 | #!/usr/bin/perl |
2 | |
5317c87c |
3 | BEGIN { |
4 | chdir 't' if -d 't'; |
5 | @INC = '../lib'; |
6 | } |
a0cb3900 |
7 | use Memoize; |
8 | |
9 | my $n = 0; |
10 | |
11 | |
12 | if (-e '.fast') { |
13 | print "1..0\n"; |
14 | exit 0; |
15 | } |
16 | |
899dc88a |
17 | print "1..12\n"; |
a0cb3900 |
18 | |
19 | ++$n; print "ok $n\n"; |
20 | |
21 | my $READFILE_CALLS = 0; |
22 | my $FILE = './TESTFILE'; |
23 | |
24 | sub 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 | |
31 | sub 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 |
40 | require Memoize::ExpireFile; |
41 | ++$n; print "ok $n\n"; |
42 | |
43 | tie my %cache => 'Memoize::ExpireFile'; |
a0cb3900 |
44 | memoize 'readfile', |
899dc88a |
45 | SCALAR_CACHE => [HASH => \%cache], |
a0cb3900 |
46 | LIST_CACHE => 'FAULT' |
47 | ; |
48 | |
49 | ++$n; print "ok $n\n"; |
50 | |
51 | writefile($FILE); |
52 | ++$n; print "ok $n\n"; |
53 | sleep 1; |
54 | |
55 | my $t1 = readfile($FILE); |
56 | ++$n; print "ok $n\n"; |
57 | ++$n; print ((($READFILE_CALLS == 1) ? '' : 'not '), "ok $n\n"); |
58 | |
59 | my $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 | |
64 | sleep 2; |
65 | writefile($FILE); |
66 | my $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 |
71 | END { 1 while unlink $FILE } |