1N/A#!/usr/bin/perl
1N/A
1N/Ause lib '..';
1N/Ause Memoize;
1N/A
1N/Amy $n = 0;
1N/A$|=1;
1N/A
1N/A
1N/Aif (-e '.fast') {
1N/A print "1..0\n";
1N/A exit 0;
1N/A}
1N/A
1N/Aprint "1..12\n";
1N/A# (1)
1N/A++$n; print "ok $n\n";
1N/A
1N/Amy $READFILE_CALLS = 0;
1N/Amy $FILE = './TESTFILE';
1N/A
1N/Asub writefile {
1N/A my $FILE = shift;
1N/A open F, "> $FILE" or die "Couldn't write temporary file $FILE: $!";
1N/A print F scalar(localtime), "\n";
1N/A close F;
1N/A}
1N/A
1N/Asub readfile {
1N/A $READFILE_CALLS++;
1N/A my $FILE = shift;
1N/A open F, "< $FILE" or die "Couldn't write temporary file $FILE: $!";
1N/A my $data = <F>;
1N/A close F;
1N/A $data;
1N/A}
1N/A
1N/Arequire Memoize::ExpireFile;
1N/A# (2)
1N/A++$n; print "ok $n\n";
1N/A
1N/Atie my %cache => 'Memoize::ExpireFile';
1N/Amemoize 'readfile',
1N/A SCALAR_CACHE => [HASH => \%cache],
1N/A LIST_CACHE => 'FAULT'
1N/A ;
1N/A
1N/A# (3)
1N/A++$n; print "ok $n\n";
1N/A
1N/A# (4)
1N/Awritefile($FILE);
1N/A++$n; print "ok $n\n";
1N/Asleep 4;
1N/A
1N/A# (5-6)
1N/Amy $t1 = readfile($FILE);
1N/A++$n; print "ok $n\n";
1N/A++$n; print ((($READFILE_CALLS == 1) ? '' : 'not '), "ok $n\n");
1N/A
1N/A# (7-9)
1N/Amy $t2 = readfile($FILE);
1N/A++$n; print "ok $n\n";
1N/A++$n; print ((($READFILE_CALLS == 1) ? '' : 'not '), "ok $n\n");
1N/A++$n; print ((($t1 eq $t2) ? '' : 'not '), "ok $n\n");
1N/A
1N/A# (10-12)
1N/Asleep 4;
1N/Awritefile($FILE);
1N/Amy $t3 = readfile($FILE);
1N/A++$n; print "ok $n\n";
1N/A++$n; print ((($READFILE_CALLS == 2) ? '' : 'not '), "ok $n\n");
1N/A++$n; print ((($t1 ne $t3) ? '' : 'not '), "ok $n\n");
1N/A
1N/AEND { 1 while unlink $FILE }