summaryrefslogtreecommitdiff
path: root/lib/Memoize/t/expire.t
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Memoize/t/expire.t')
-rw-r--r--lib/Memoize/t/expire.t70
1 files changed, 70 insertions, 0 deletions
diff --git a/lib/Memoize/t/expire.t b/lib/Memoize/t/expire.t
new file mode 100644
index 0000000000..28cf559391
--- /dev/null
+++ b/lib/Memoize/t/expire.t
@@ -0,0 +1,70 @@
+#!/usr/bin/perl
+
+use lib '..';
+use Memoize;
+use Memoize::ExpireTest;
+
+my $n = 0;
+
+print "1..17\n";
+
+$n++; print "ok $n\n";
+
+my %CALLS;
+sub id {
+ my($arg) = @_;
+ ++$CALLS{$arg};
+ $arg;
+}
+
+memoize 'id', SCALAR_CACHE => ['TIE', 'Memoize::ExpireTest'],
+ LIST_CACHE => 'FAULT';
+$n++; print "ok $n\n";
+
+for $i (1, 2, 3, 1, 2, 1) {
+ $n++;
+ unless ($i == id($i)) {
+ print "not ";
+ }
+ print "ok $n\n";
+}
+
+for $i (1, 2, 3) {
+ $n++;
+ unless ($CALLS{$i} == 1) {
+ print "not ";
+ }
+ print "ok $n\n";
+}
+
+Memoize::ExpireTest::expire(1);
+
+for $i (1, 2, 3) {
+ my $v = id($i);
+}
+
+for $i (1, 2, 3) {
+ $n++;
+ unless ($CALLS{$i} == 1 + ($i == 1)) {
+ print "not ";
+ }
+ print "ok $n\n";
+}
+
+Memoize::ExpireTest::expire(1);
+Memoize::ExpireTest::expire(2);
+
+for $i (1, 2, 3) {
+ my $v = id($i);
+}
+
+for $i (1, 2, 3) {
+ $n++;
+ unless ($CALLS{$i} == 4 - $i) {
+ print "not ";
+ }
+ print "ok $n\n";
+}
+
+exit 0;
+