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