Configure-related tweaks.
[p5sagit/p5-mst-13.2.git] / lib / Memoize / t / expire_file.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 if (-e '.fast') {
13   print "1..0\n";
14   exit 0;
15 }
16
17 print "1..12\n";
18
19 ++$n; print "ok $n\n";
20
21 my $READFILE_CALLS = 0;
22 my $FILE = './TESTFILE';
23
24 sub writefile {
25   my $FILE = shift;
26   open F, "> $FILE" or die "Couldn't write temporary file $FILE: $!";
27   print F scalar(localtime), "\n";
28   close F;
29 }
30
31 sub readfile {
32   $READFILE_CALLS++;
33   my $FILE = shift;
34   open F, "< $FILE" or die "Couldn't read temporary file $FILE: $!";
35   my $data = <F>;
36   close F;
37   $data;
38 }
39
40 require Memoize::ExpireFile;
41 ++$n; print "ok $n\n";
42
43 tie my %cache => 'Memoize::ExpireFile';
44 memoize 'readfile',
45     SCALAR_CACHE => [HASH => \%cache],
46     LIST_CACHE => 'FAULT'
47     ;
48
49 ++$n; print "ok $n\n";
50
51 writefile($FILE);
52 ++$n; print "ok $n\n";
53 sleep 1;
54
55 my $t1 = readfile($FILE);
56 ++$n; print "ok $n\n";
57 ++$n; print ((($READFILE_CALLS == 1) ? '' : 'not '), "ok $n\n");
58
59 my $t2 = readfile($FILE);
60 ++$n; print "ok $n\n";
61 ++$n; print ((($READFILE_CALLS == 1) ? '' : 'not '), "ok $n\n");
62 ++$n; print ((($t1 eq $t2) ? '' : 'not '), "ok $n\n");
63
64 sleep 3;
65 writefile($FILE);
66 my $t3 = readfile($FILE);
67 ++$n; print "ok $n\n";
68 ++$n; print ((($READFILE_CALLS == 2) ? '' : 'not '), "ok $n\n");
69 ++$n; print ((($t1 ne $t3) ? '' : 'not '), "ok $n\n");
70
71 END { 1 while unlink $FILE }