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