1#!/usr/bin/perl 2 3use lib '..'; 4use Memoize; 5use Memoize::ExpireTest; 6 7my $n = 0; 8 9print "1..17\n"; 10 11$n++; print "ok $n\n"; 12 13my %CALLS; 14sub id { 15 my($arg) = @_; 16 ++$CALLS{$arg}; 17 $arg; 18} 19 20tie my %cache => 'Memoize::ExpireTest'; 21memoize 'id', 22 SCALAR_CACHE => [HASH => \%cache], 23 LIST_CACHE => 'FAULT'; 24$n++; print "ok $n\n"; 25 26for $i (1, 2, 3, 1, 2, 1) { 27 $n++; 28 unless ($i == id($i)) { 29 print "not "; 30 } 31 print "ok $n\n"; 32} 33 34for $i (1, 2, 3) { 35 $n++; 36 unless ($CALLS{$i} == 1) { 37 print "not "; 38 } 39 print "ok $n\n"; 40} 41 42Memoize::ExpireTest::expire(1); 43 44for $i (1, 2, 3) { 45 my $v = id($i); 46} 47 48for $i (1, 2, 3) { 49 $n++; 50 unless ($CALLS{$i} == 1 + ($i == 1)) { 51 print "not "; 52 } 53 print "ok $n\n"; 54} 55 56Memoize::ExpireTest::expire(1); 57Memoize::ExpireTest::expire(2); 58 59for $i (1, 2, 3) { 60 my $v = id($i); 61} 62 63for $i (1, 2, 3) { 64 $n++; 65 unless ($CALLS{$i} == 4 - $i) { 66 print "not "; 67 } 68 print "ok $n\n"; 69} 70 71exit 0; 72 73