xref: /onnv-gate/usr/src/cmd/perl/5.8.4/distrib/lib/Memoize/t/expire.t (revision 0:68f95e015346)
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