diff options
Diffstat (limited to 'lib/Memoize/t/expire.t')
-rw-r--r-- | lib/Memoize/t/expire.t | 70 |
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; + |