function testCallGeneric() { var arr = [instance.add, jsAdd]; for (let i = 0; i < INNER_ITERATIONS; i++) {
assertEq(arr[i%2](i, i+1), 2*i + 1);
}
}
function testCallGenericRectifying() { var arr = [instance.add, jsAdd]; for (let i = 0; i < INNER_ITERATIONS; i++) {
assertEq(arr[i%2](i+1), i + 1);
}
}
function testCallScriptedGetter() { var obj = {};
Object.defineProperty(obj, 'x', {
get: instance.no_arg
}); for (let i = 0; i < INNER_ITERATIONS; i++) {
assertEq(obj.x, 100);
}
}
function testCallScriptedGetterRectifying() { var obj = {};
Object.defineProperty(obj, 'x', { // Missing two arguments.
get: instance.add
}); for (let i = 0; i < INNER_ITERATIONS; i++) {
assertEq(obj.x, 0);
}
}
function testCallScriptedSetter() { var obj = {};
Object.defineProperty(obj, 'x', {
set: instance.set_global_one
}); for (let i = 0; i < INNER_ITERATIONS; i++) {
obj.x = i;
}
assertEq(instance.glob(), INNER_ITERATIONS-1);
}
function testCallScriptedSetterRectifying() { var obj = {};
Object.defineProperty(obj, 'x', {
set: instance.set_global_two
}); for (let i = 0; i < INNER_ITERATIONS; i++) {
obj.x = i;
}
assertEq(instance.glob(), INNER_ITERATIONS-1);
}
function testFunctionApplyArray() { for (let i = 0; i < INNER_ITERATIONS; i++) {
assertEq(instance.add.apply(null, [i, i + 1]), 2*i+1);
}
}
function testFunctionApplyArrayRectifying() { for (let i = 0; i < INNER_ITERATIONS; i++) {
assertEq(instance.add.apply(null, [i + 1]), i+1);
}
}
function testFunctionApplyArgs() { function wrapper() {
assertEq(instance.add.apply(null, arguments), 2*arguments[0]+1);
} for (let i = 0; i < INNER_ITERATIONS; i++) {
wrapper(i, i + 1);
}
}
function testFunctionApplyArgsRectifying() { function wrapper() {
assertEq(instance.add.apply(null, arguments), arguments[0]);
} for (let i = 0; i < INNER_ITERATIONS; i++) {
wrapper(i + 1);
}
}
function testFunctionCall() { for (let i = 0; i < INNER_ITERATIONS; i++) {
assertEq(instance.add.call(null, i, i + 1), 2*i+1);
}
}
function testFunctionCallRectifying() { for (let i = 0; i < INNER_ITERATIONS; i++) {
assertEq(instance.add.call(null, i + 1), i+1);
}
}
run('call known', testCallKnown);
run('call known rectifying', testCallKnownRectifying);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.