// nactuals > nformals function testOverflow() { var called = false; function f(a) { assertEq(a, 173); assertEq(arguments.length, 2); assertEq(arguments[0], a); assertEq(arguments[1], a); called = true; } for (var i=0; i<10; i++) [173, 173, 173].sort(f); assertEq(called, true); } testOverflow(); // nactuals == nformals function testEqual() { var called = false; function f(a, b) { assertEq(a, 173); assertEq(arguments.length, 2); assertEq(arguments[0], a); assertEq(arguments[1], b); called = true; } for (var i=0; i<10; i++) [173, 173, 173].sort(f); assertEq(called, true); } testEqual(); // nactuals < nformals function testUnderflow() { var called = false; function f(a, b, c) { assertEq(a, 173); assertEq(c, undefined); assertEq(arguments.length, 2); assertEq(arguments[0], a); assertEq(arguments[1], b); called = true; } for (var i=0; i<10; i++) [173, 173, 173].sort(f); assertEq(called, true); } testUnderflow(); function testUnderflowMany() { var called = 0; function f(a, b, c, d, e, f, g, h) { assertEq(a, 173); assertEq(arguments.length, 3); assertEq(arguments[0], a); assertEq(arguments[1] < 3, true); assertEq(c.length, 3); assertEq(d, undefined); assertEq(e, undefined); assertEq(f, undefined); assertEq(g, undefined); assertEq(h, undefined); called += 1; } for (var i=0; i<10; i++) [173, 173, 173].map(f); assertEq(called, 30); } testUnderflowMany();