1#!/usr/bin/perl 2 3use lib '..'; 4use Memoize; 5use Config; 6 7$|=1; 8print "1..11\n"; 9 10eval { memoize({}) }; 11print $@ ? "ok 1\n" : "not ok 1 # $@\n"; 12 13eval { memoize([]) }; 14print $@ ? "ok 2\n" : "not ok 2 # $@\n"; 15 16eval { my $x; memoize(\$x) }; 17print $@ ? "ok 3\n" : "not ok 3 # $@\n"; 18 19# 4--8 20$n = 4; 21my $dummyfile = './dummydb'; 22use Fcntl; 23my %args = ( DB_File => [], 24 GDBM_File => [$dummyfile, 2, 0666], 25 ODBM_File => [$dummyfile, O_RDWR|O_CREAT, 0666], 26 NDBM_File => [$dummyfile, O_RDWR|O_CREAT, 0666], 27 SDBM_File => [$dummyfile, O_RDWR|O_CREAT, 0666], 28 ); 29for $mod (qw(DB_File GDBM_File SDBM_File ODBM_File NDBM_File)) { 30 eval { 31 require "$mod.pm"; 32 tie my %cache => $mod, @{$args{$mod}}; 33 memoize(sub {}, LIST_CACHE => [HASH => \%cache ]); 34 }; 35 print $@ =~ /can only store scalars/ 36 || $@ =~ /Can't locate.*in \@INC/ 37 || $@ =~ /Can't load '.*?' for module/ ? "ok $n\n" : "not ok $n # $@\n"; 38 1 while unlink $dummyfile, "$dummyfile.dir", "$dummyfile.pag", "$dummyfile.db"; 39 $n++; 40} 41 42# 9 43eval { local $^W = 0; 44 memoize(sub {}, LIST_CACHE => ['TIE', 'WuggaWugga']) 45 }; 46print $@ ? "ok 9\n" : "not ok 9 # $@\n"; 47 48# 10 49eval { memoize(sub {}, LIST_CACHE => 'YOB GORGLE') }; 50print $@ ? "ok 10\n" : "not ok 10 # $@\n"; 51 52# 11 53eval { memoize(sub {}, SCALAR_CACHE => ['YOB GORGLE']) }; 54print $@ ? "ok 11\n" : "not ok 11 # $@\n"; 55 56