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