Re: Clock skew failures in Memoize test suite
[p5sagit/p5-mst-13.2.git] / lib / Memoize / t / array.t
CommitLineData
a0cb3900 1#!/usr/bin/perl
2
484fdf61 3use lib '..';
a0cb3900 4use Memoize;
5
6
7print "1..11\n";
8
9sub timelist {
10 return (time) x $_[0];
11}
12
13memoize('timelist');
14
15@t1 = &timelist(1);
16sleep 2;
17@u1 = &timelist(1);
18print ((("@t1" eq "@u1") ? '' : 'not '), "ok 1\n");
19
20@t7 = &timelist(7);
21print (((@t7 == 7) ? '' : 'not '), "ok 2\n");
22$BAD = 0;
23for ($i = 1; $i < 7; $i++) {
24 $BAD++ unless $t7[$i-1] == $t7[$i];
25}
26print (($BAD ? 'not ' : ''), "ok 3\n");
27
28sleep 2;
29@u7 = &timelist(7);
30print (((@u7 == 7) ? '' : 'not '), "ok 4\n");
31$BAD = 0;
32for ($i = 1; $i < 7; $i++) {
33 $BAD++ unless $u7[$i-1] == $u7[$i];
34}
35print (($BAD ? 'not ' : ''), "ok 5\n");
36# Properly memoized?
37print ((("@t7" eq "@u7") ? '' : 'not '), "ok 6\n");
38
39sub con {
40 return wantarray()
41}
42
43# Same arguments yield different results in different contexts?
44memoize('con');
45$s = con(1);
46@a = con(1);
47print ((($s == $a[0]) ? 'not ' : ''), "ok 7\n");
48
49# Context propagated correctly?
50print ((($s eq '') ? '' : 'not '), "ok 8\n"); # Scalar context
51print ((("@a" eq '1' && @a == 1) ? '' : 'not '), "ok 9\n"); # List context
52
53# Context propagated correctly to normalizer?
54sub n {
55 my $arg = shift;
56 my $test = shift;
57 if (wantarray) {
58 print ((($arg eq ARRAY) ? '' : 'not '), "ok $test\n"); # List context
59 } else {
60 print ((($arg eq SCALAR) ? '' : 'not '), "ok $test\n"); # Scalar context
61 }
62}
63
64sub f { 1 }
65memoize('f', NORMALIZER => 'n');
66$s = f('SCALAR', 10); # Test 10
67@a = f('ARRAY' , 11); # Test 11
68