bug809021.js (1702B)
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();