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