#!./perl BEGIN { chdir 't' if -d 't'; @INC = '../lib'; } print "1..5\n"; use FileCache maxopen=>2; my @files = qw(foo bar baz quux); {# Test 1: that we can open files for my $path ( @files ){ cacheout $path; print $path "$path 1\n"; } print "not " unless scalar map({ -f } @files) == 4; print "ok 1\n"; } {# Test 2: that we actually adhere to maxopen my @cat; for my $path ( @files ){ print $path "$path 2\n"; close($path); open($path, $path); <$path>; push @cat, <$path>; close($path); } print "not " if (grep {/foo|bar/} @cat) && ! (grep {/baz|quux/} @cat); print "ok 2\n" ; } {# Test 3: that we open for append on second viewing my @cat; for my $path ( @files ){ cacheout $path; print $path "$path 3\n"; } for my $path ( @files ){ open($path, $path); push @cat, do{ local $/; <$path>}; close($path); } print "not " unless scalar map({ /3$/ } @cat) == 4; print "ok 3\n"; } {# Test 4: that 2 arg format works cacheout '+<', "foo"; print foo "foo 2\n"; close foo; cacheout '<', "foo"; print "not " unless eq "foo 2\n"; print "ok 4\n"; close(foo); } {# Test 5: that close is overridden properly cacheout local $_ = "Foo_Bar"; print $_ "Hello World\n"; close($_); open($_, "+>$_"); print $_ "$_\n"; seek($_, 0, 0); print "not " unless <$_> eq "$_\n"; print "ok 5\n"; close($_); } q( {# Test close override package Bob; use FileCache; cacheout local $_ = "Foo_Bar"; print $_ "Hello World\n"; close($_); open($_, "+>$_"); print $_ "$_\n"; seek($_, 0, 0); print "not " unless <$_> eq "$_\n"; print "ok 5\n"; close($_); } ); 1 while unlink @files, "Foo_Bar";