1N/A#!/usr/bin/perl
1N/A
1N/Ause lib '..';
1N/Ause Memoize;
1N/Ause Config;
1N/A
1N/A$|=1;
1N/Aprint "1..11\n";
1N/A
1N/Aeval { memoize({}) };
1N/Aprint $@ ? "ok 1\n" : "not ok 1 # $@\n";
1N/A
1N/Aeval { memoize([]) };
1N/Aprint $@ ? "ok 2\n" : "not ok 2 # $@\n";
1N/A
1N/Aeval { my $x; memoize(\$x) };
1N/Aprint $@ ? "ok 3\n" : "not ok 3 # $@\n";
1N/A
1N/A# 4--8
1N/A$n = 4;
1N/Amy $dummyfile = './dummydb';
1N/Ause Fcntl;
1N/Amy %args = ( DB_File => [],
1N/A GDBM_File => [$dummyfile, 2, 0666],
1N/A ODBM_File => [$dummyfile, O_RDWR|O_CREAT, 0666],
1N/A NDBM_File => [$dummyfile, O_RDWR|O_CREAT, 0666],
1N/A SDBM_File => [$dummyfile, O_RDWR|O_CREAT, 0666],
1N/A );
1N/Afor $mod (qw(DB_File GDBM_File SDBM_File ODBM_File NDBM_File)) {
1N/A eval {
1N/A require "$mod.pm";
1N/A tie my %cache => $mod, @{$args{$mod}};
1N/A memoize(sub {}, LIST_CACHE => [HASH => \%cache ]);
1N/A };
1N/A print $@ =~ /can only store scalars/
1N/A || $@ =~ /Can't locate.*in \@INC/
1N/A || $@ =~ /Can't load '.*?' for module/ ? "ok $n\n" : "not ok $n # $@\n";
1N/A 1 while unlink $dummyfile, "$dummyfile.dir", "$dummyfile.pag", "$dummyfile.db";
1N/A $n++;
1N/A}
1N/A
1N/A# 9
1N/Aeval { local $^W = 0;
1N/A memoize(sub {}, LIST_CACHE => ['TIE', 'WuggaWugga'])
1N/A };
1N/Aprint $@ ? "ok 9\n" : "not ok 9 # $@\n";
1N/A
1N/A# 10
1N/Aeval { memoize(sub {}, LIST_CACHE => 'YOB GORGLE') };
1N/Aprint $@ ? "ok 10\n" : "not ok 10 # $@\n";
1N/A
1N/A# 11
1N/Aeval { memoize(sub {}, SCALAR_CACHE => ['YOB GORGLE']) };
1N/Aprint $@ ? "ok 11\n" : "not ok 11 # $@\n";
1N/A