summaryrefslogtreecommitdiff
path: root/lib/Memoize/t/expfile.t
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Memoize/t/expfile.t')
-rw-r--r--lib/Memoize/t/expfile.t68
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 }