for beter make distclean (was Re: [PATCH] Re: [ID 20020305.026] Not OK: perl v5.7...
[p5sagit/p5-mst-13.2.git] / lib / Memoize / t / tiefeatures.t
CommitLineData
a0cb3900 1#!/usr/bin/perl
2
5317c87c 3BEGIN {
4 chdir 't' if -d 't';
5 @INC = '../lib';
6}
a0cb3900 7use lib 'blib/lib';
8use Memoize 0.45 qw(memoize unmemoize);
9use Fcntl;
10
11# print STDERR $INC{'Memoize.pm'}, "\n";
12
13print "1..10\n";
14
15# Test MERGE
16sub xx {
17 wantarray();
18}
19
20my $s = xx();
21print ((!$s) ? "ok 1\n" : "not ok 1\n");
22my ($a) = xx();
23print (($a) ? "ok 2\n" : "not ok 2\n");
24memoize 'xx', LIST_CACHE => MERGE;
25$s = xx();
26print ((!$s) ? "ok 3\n" : "not ok 3\n");
27($a) = xx(); # Should return cached false value from previous invocation
28print ((!$a) ? "ok 4\n" : "not ok 4\n");
29
30
31# Test FAULT
32sub ns {}
33sub na {}
34memoize 'ns', SCALAR_CACHE => FAULT;
35memoize 'na', LIST_CACHE => FAULT;
36eval { my $s = ns() }; # Should fault
37print (($@) ? "ok 5\n" : "not ok 5\n");
38eval { my ($a) = na() }; # Should fault
39print (($@) ? "ok 6\n" : "not ok 6\n");
40
41
42# Test HASH
43my (%s, %l);
44sub nul {}
45memoize 'nul', SCALAR_CACHE => [HASH => \%s], LIST_CACHE => [HASH => \%l];
46nul('x');
47nul('y');
48print ((join '', sort keys %s) eq 'xy' ? "ok 7\n" : "not ok 7\n");
49print ((join '', sort keys %l) eq '' ? "ok 8\n" : "not ok 8\n");
50() = nul('p');
51() = nul('q');
52print ((join '', sort keys %s) eq 'xy' ? "ok 9\n" : "not ok 9\n");
53print ((join '', sort keys %l) eq 'pq' ? "ok 10\n" : "not ok 10\n");
54