diff options
Diffstat (limited to 'lib/Memoize/t/expfile.t')
-rw-r--r-- | lib/Memoize/t/expfile.t | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/lib/Memoize/t/expfile.t b/lib/Memoize/t/expfile.t new file mode 100644 index 0000000000..9959d00313 --- /dev/null +++ b/lib/Memoize/t/expfile.t @@ -0,0 +1,68 @@ +#!/usr/bin/perl + +use lib '..'; +use Memoize; + +my $n = 0; + + +if (-e '.fast') { + print "1..0\n"; + exit 0; +} + +print "1..12\n"; + +++$n; print "ok $n\n"; + +my $READFILE_CALLS = 0; +my $FILE = './TESTFILE'; + +sub writefile { + my $FILE = shift; + open F, "> $FILE" or die "Couldn't write temporary file $FILE: $!"; + print F scalar(localtime), "\n"; + close F; +} + +sub readfile { + $READFILE_CALLS++; + my $FILE = shift; + open F, "< $FILE" or die "Couldn't write temporary file $FILE: $!"; + my $data = <F>; + close F; + $data; +} + +require Memoize::ExpireFile; +++$n; print "ok $n\n"; + +tie my %cache => 'Memoize::ExpireFile'; +memoize 'readfile', + SCALAR_CACHE => [HASH => \%cache], + LIST_CACHE => 'FAULT' + ; + +++$n; print "ok $n\n"; + +writefile($FILE); +++$n; print "ok $n\n"; +sleep 1; + +my $t1 = readfile($FILE); +++$n; print "ok $n\n"; +++$n; print ((($READFILE_CALLS == 1) ? '' : 'not '), "ok $n\n"); + +my $t2 = readfile($FILE); +++$n; print "ok $n\n"; +++$n; print ((($READFILE_CALLS == 1) ? '' : 'not '), "ok $n\n"); +++$n; print ((($t1 eq $t2) ? '' : 'not '), "ok $n\n"); + +sleep 2; +writefile($FILE); +my $t3 = readfile($FILE); +++$n; print "ok $n\n"; +++$n; print ((($READFILE_CALLS == 2) ? '' : 'not '), "ok $n\n"); +++$n; print ((($t1 ne $t3) ? '' : 'not '), "ok $n\n"); + +END { 1 while unlink $FILE } |