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