Configure-related tweaks.
[p5sagit/p5-mst-13.2.git] / lib / Memoize / t / expire_module_n.t
1 #!/usr/bin/perl
2
3 BEGIN {
4     chdir 't' if -d 't';
5     @INC = '../lib';
6 }
7 use Memoize;
8
9 my $n = 0;
10
11
12 print "1..22\n";
13
14 ++$n; print "ok $n\n";
15
16 $RETURN = 1;
17
18 %CALLS = ();
19 sub call {
20 #  print "CALL $_[0] => $RETURN\n";
21   ++$CALLS{$_[0]};
22   $RETURN;
23 }
24
25 require Memoize::Expire;
26 ++$n; print "ok $n\n";
27
28 tie my %cache => 'Memoize::Expire', NUM_USES => 2;
29 memoize 'call',
30     SCALAR_CACHE => [HASH => \%cache],
31     LIST_CACHE => 'FAULT';
32
33 # $Memoize::Expire::DEBUG = 1;
34 ++$n; print "ok $n\n";
35
36 # 3--6
37 for (0,1,2,3) {
38   print "not " unless call($_) == 1;
39   ++$n; print "ok $n\n";
40 }
41
42 # 7--10
43 for (keys %CALLS) {
44   print "not " unless $CALLS{$_} == (1,1,1,1)[$_];
45   ++$n; print "ok $n\n";
46 }
47
48 # 11--13
49 $RETURN = 2;
50 ++$n; print ((call(1) == 1 ? '' : 'not '), "ok $n\n"); # 1 expires
51 ++$n; print ((call(1) == 2 ? '' : 'not '), "ok $n\n"); # 1 gets new val
52 ++$n; print ((call(2) == 1 ? '' : 'not '), "ok $n\n"); # 2 expires
53
54 # 14--17
55 $RETURN = 3;
56 for (0,1,2,3) {
57   # 0 expires, 1 expires, 2 gets new val, 3 expires
58   print "not " unless call($_) == (1,2,3,1)[$_];
59   ++$n; print "ok $n\n";
60 }
61
62 for (0,1,2,3) {
63   print "not " unless $CALLS{$_} == (1,2,2,1)[$_];
64   ++$n; print "ok $n\n";
65 }