|
1 // nactuals > nformals |
|
2 function testOverflow() { |
|
3 var called = false; |
|
4 function f(a) { |
|
5 assertEq(a, 173); |
|
6 assertEq(arguments.length, 2); |
|
7 assertEq(arguments[0], a); |
|
8 assertEq(arguments[1], a); |
|
9 called = true; |
|
10 } |
|
11 |
|
12 for (var i=0; i<10; i++) |
|
13 [173, 173, 173].sort(f); |
|
14 assertEq(called, true); |
|
15 } |
|
16 testOverflow(); |
|
17 |
|
18 // nactuals == nformals |
|
19 function testEqual() { |
|
20 var called = false; |
|
21 function f(a, b) { |
|
22 assertEq(a, 173); |
|
23 assertEq(arguments.length, 2); |
|
24 assertEq(arguments[0], a); |
|
25 assertEq(arguments[1], b); |
|
26 called = true; |
|
27 } |
|
28 |
|
29 for (var i=0; i<10; i++) |
|
30 [173, 173, 173].sort(f); |
|
31 assertEq(called, true); |
|
32 } |
|
33 testEqual(); |
|
34 |
|
35 // nactuals < nformals |
|
36 function testUnderflow() { |
|
37 var called = false; |
|
38 function f(a, b, c) { |
|
39 assertEq(a, 173); |
|
40 assertEq(c, undefined); |
|
41 assertEq(arguments.length, 2); |
|
42 assertEq(arguments[0], a); |
|
43 assertEq(arguments[1], b); |
|
44 called = true; |
|
45 } |
|
46 |
|
47 for (var i=0; i<10; i++) |
|
48 [173, 173, 173].sort(f); |
|
49 assertEq(called, true); |
|
50 } |
|
51 testUnderflow(); |
|
52 |
|
53 function testUnderflowMany() { |
|
54 var called = 0; |
|
55 function f(a, b, c, d, e, f, g, h) { |
|
56 assertEq(a, 173); |
|
57 assertEq(arguments.length, 3); |
|
58 assertEq(arguments[0], a); |
|
59 assertEq(arguments[1] < 3, true); |
|
60 assertEq(c.length, 3); |
|
61 assertEq(d, undefined); |
|
62 assertEq(e, undefined); |
|
63 assertEq(f, undefined); |
|
64 assertEq(g, undefined); |
|
65 assertEq(h, undefined); |
|
66 called += 1; |
|
67 } |
|
68 |
|
69 for (var i=0; i<10; i++) |
|
70 [173, 173, 173].map(f); |
|
71 assertEq(called, 30); |
|
72 } |
|
73 testUnderflowMany(); |