109 lines
2.4 KiB
JavaScript
109 lines
2.4 KiB
JavaScript
description(
|
|
"This test checks the behavior of Arguments object iteration."
|
|
);
|
|
|
|
|
|
var arguments = null;
|
|
shouldThrow("(function (arguments) { for (var argument of arguments) {}})()")
|
|
|
|
function test() {
|
|
var i = 0;
|
|
for (arg of arguments) {
|
|
realArg = arguments[i++];
|
|
shouldBeTrue("arg === realArg");
|
|
}
|
|
iteratedArgumentsLength = i;
|
|
actualArgumentsLength = arguments.length;
|
|
shouldBe("actualArgumentsLength", "iteratedArgumentsLength");
|
|
}
|
|
|
|
test();
|
|
test("a");
|
|
test("a", "b");
|
|
test({})
|
|
|
|
function testAlias() {
|
|
var i = 0;
|
|
var a = arguments;
|
|
for (arg of a) {
|
|
realArg = arguments[i++];
|
|
shouldBeTrue("arg === realArg");
|
|
}
|
|
iteratedArgumentsLength = i;
|
|
actualArgumentsLength = arguments.length;
|
|
shouldBe("actualArgumentsLength", "iteratedArgumentsLength");
|
|
}
|
|
|
|
testAlias();
|
|
testAlias("a");
|
|
testAlias("a", "b");
|
|
testAlias({})
|
|
|
|
|
|
function testStrict() {
|
|
"use strict";
|
|
var i = 0;
|
|
for (arg of arguments) {
|
|
realArg = arguments[i++];
|
|
shouldBeTrue("arg === realArg");
|
|
}
|
|
iteratedArgumentsLength = i;
|
|
actualArgumentsLength = arguments.length;
|
|
shouldBe("actualArgumentsLength", "iteratedArgumentsLength");
|
|
}
|
|
|
|
testStrict();
|
|
testStrict("a");
|
|
testStrict("a", "b");
|
|
testStrict({})
|
|
|
|
|
|
function testReifiedArguments() {
|
|
var i = 0;
|
|
arguments.expando = 1;
|
|
for (arg of arguments) {
|
|
realArg = arguments[i++];
|
|
shouldBeTrue("arg === realArg");
|
|
}
|
|
iteratedArgumentsLength = i;
|
|
actualArgumentsLength = arguments.length;
|
|
shouldBe("actualArgumentsLength", "iteratedArgumentsLength");
|
|
}
|
|
|
|
testReifiedArguments();
|
|
testReifiedArguments("a");
|
|
testReifiedArguments("a", "b");
|
|
testReifiedArguments({})
|
|
|
|
|
|
function testEmptyArrayArguments() {
|
|
arguments = [];
|
|
for (arg of arguments) {
|
|
fail("nothing to iterate");
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
shouldBeTrue("testEmptyArrayArguments('a')");
|
|
shouldBeTrue("testEmptyArrayArguments()");
|
|
|
|
|
|
function testArrayArguments() {
|
|
var i = 0;
|
|
arguments = [1, 2, 3];
|
|
for (arg of arguments) {
|
|
realArg = arguments[i++];
|
|
shouldBeTrue("arg === realArg");
|
|
}
|
|
iteratedArgumentsLength = i;
|
|
actualArgumentsLength = arguments.length;
|
|
shouldBe("actualArgumentsLength", "iteratedArgumentsLength");
|
|
}
|
|
|
|
testArrayArguments();
|
|
testArrayArguments("a");
|
|
testArrayArguments("a", "b");
|
|
testArrayArguments({});
|