mirror of
https://github.com/tc39/test262.git
synced 2025-05-03 22:40:28 +02:00
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
194 lines
5.6 KiB
JavaScript
194 lines
5.6 KiB
JavaScript
function shouldBe(actual, expected) {
|
|
if (actual !== expected)
|
|
throw new Error('bad value: ' + actual);
|
|
}
|
|
|
|
function testSyntaxError(script, message) {
|
|
var error = null;
|
|
try {
|
|
eval(script);
|
|
} catch (e) {
|
|
error = e;
|
|
}
|
|
if (!error)
|
|
throw new Error("Expected syntax error not thrown");
|
|
|
|
if (String(error) !== message)
|
|
throw new Error("Bad error: " + String(error));
|
|
}
|
|
|
|
(function () {
|
|
var [a, b, ...c] = "Cocoa";
|
|
shouldBe(a, 'C');
|
|
shouldBe(b, 'o');
|
|
shouldBe(JSON.stringify(c), String.raw`["c","o","a"]`);
|
|
}());
|
|
|
|
(function () {
|
|
var [a, b, ...c] = "Co";
|
|
shouldBe(a, 'C');
|
|
shouldBe(b, 'o');
|
|
shouldBe(JSON.stringify(c), String.raw`[]`);
|
|
}());
|
|
|
|
(function () {
|
|
var [a, b, ...c] = "C";
|
|
shouldBe(a, 'C');
|
|
shouldBe(b, undefined);
|
|
shouldBe(JSON.stringify(c), String.raw`[]`);
|
|
}());
|
|
|
|
(function () {
|
|
var a, b, c;
|
|
[a, b, ...c] = "Cocoa";
|
|
shouldBe(a, 'C');
|
|
shouldBe(b, 'o');
|
|
shouldBe(JSON.stringify(c), String.raw`["c","o","a"]`);
|
|
}());
|
|
|
|
(function () {
|
|
var a, b, c;
|
|
[a, b, ...c] = "Co";
|
|
shouldBe(a, 'C');
|
|
shouldBe(b, 'o');
|
|
shouldBe(JSON.stringify(c), String.raw`[]`);
|
|
}());
|
|
|
|
(function () {
|
|
var a, b, c;
|
|
[a, b, ...c] = "C";
|
|
shouldBe(a, 'C');
|
|
shouldBe(b, undefined);
|
|
shouldBe(JSON.stringify(c), String.raw`[]`);
|
|
}());
|
|
|
|
(function ([a, b, ...c]) {
|
|
shouldBe(a, 'C');
|
|
shouldBe(b, 'o');
|
|
shouldBe(JSON.stringify(c), String.raw`["c","o","a"]`);
|
|
}("Cocoa"));
|
|
|
|
(function ([a, b, ...c]) {
|
|
shouldBe(a, 'C');
|
|
shouldBe(b, 'o');
|
|
shouldBe(JSON.stringify(c), String.raw`[]`);
|
|
}("Co"));
|
|
|
|
(function ([a, b, ...c]) {
|
|
shouldBe(a, 'C');
|
|
shouldBe(b, undefined);
|
|
shouldBe(JSON.stringify(c), String.raw`[]`);
|
|
}("C"));
|
|
|
|
testSyntaxError(String.raw`var [a, ...b, c] = 20`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element destructuring pattern.`);
|
|
testSyntaxError(String.raw`var [a, ...b,] = 20`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element destructuring pattern.`);
|
|
testSyntaxError(String.raw`var [a, ...b,,] = 20`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element destructuring pattern.`);
|
|
testSyntaxError(String.raw`var [a, ...b = 20] = 20`, String.raw`SyntaxError: Unexpected token '='. Expected a closing ']' following a rest element destructuring pattern.`);
|
|
|
|
testSyntaxError(String.raw`(function ([a, ...b,]) { })`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element destructuring pattern.`);
|
|
testSyntaxError(String.raw`(function ([a, ...b,,]) { })`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element destructuring pattern.`);
|
|
testSyntaxError(String.raw`(function ([a, ...b = 20,,]) { })`, String.raw`SyntaxError: Unexpected token '='. Expected a closing ']' following a rest element destructuring pattern.`);
|
|
|
|
|
|
testSyntaxError(String.raw`[a, ...b, c] = 20`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element destructuring pattern.`);
|
|
testSyntaxError(String.raw`[a, ...b,] = 20`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element destructuring pattern.`);
|
|
testSyntaxError(String.raw`[a, ...b,,] = 20`, String.raw`SyntaxError: Unexpected token ','. Expected a closing ']' following a rest element destructuring pattern.`);
|
|
testSyntaxError(String.raw`[a, ...b = 20] = 20`, String.raw`SyntaxError: Unexpected token '='. Expected a closing ']' following a rest element destructuring pattern.`);
|
|
|
|
(function () {
|
|
var a, b, c;
|
|
[a, b, ...[...c]] = "Cocoa";
|
|
shouldBe(a, 'C');
|
|
shouldBe(b, 'o');
|
|
shouldBe(JSON.stringify(c), String.raw`["c","o","a"]`);
|
|
}());
|
|
|
|
(function () {
|
|
var a, b, c, d, e, f;
|
|
[a, b, ...{ 0: c, 1: d, 2: e, 3: f }] = "Cocoa";
|
|
shouldBe(a, 'C');
|
|
shouldBe(b, 'o');
|
|
shouldBe(c, 'c');
|
|
shouldBe(d, 'o');
|
|
shouldBe(f, undefined);
|
|
}());
|
|
|
|
(function () {
|
|
var a, b, c, d, e;
|
|
[a, b, ...[c, d, ...e]] = "Cocoa";
|
|
shouldBe(a, 'C');
|
|
shouldBe(b, 'o');
|
|
shouldBe(c, 'c');
|
|
shouldBe(d, 'o');
|
|
shouldBe(JSON.stringify(e), String.raw`["a"]`);
|
|
}());
|
|
|
|
function iterator(array) {
|
|
var nextCount = 0;
|
|
var returnCount = 0;
|
|
var original = array.values();
|
|
return {
|
|
[Symbol.iterator]() {
|
|
return this;
|
|
},
|
|
|
|
next() {
|
|
++nextCount;
|
|
return original.next();
|
|
},
|
|
|
|
return() {
|
|
++returnCount;
|
|
return { done: true };
|
|
},
|
|
|
|
reportNext() {
|
|
return nextCount;
|
|
},
|
|
|
|
reportReturn() {
|
|
return returnCount;
|
|
}
|
|
};
|
|
};
|
|
|
|
(function () {
|
|
var iter = iterator([1, 2, 3]);
|
|
var [...a] = iter;
|
|
shouldBe(iter.reportNext(), 4);
|
|
shouldBe(iter.reportReturn(), 0);
|
|
shouldBe(JSON.stringify(a), String.raw`[1,2,3]`);
|
|
}());
|
|
|
|
(function () {
|
|
var iter = iterator([1, 2, 3]);
|
|
var [a, b, ...c] = iter;
|
|
shouldBe(iter.reportNext(), 4);
|
|
shouldBe(iter.reportReturn(), 0);
|
|
shouldBe(a, 1);
|
|
shouldBe(b, 2);
|
|
shouldBe(JSON.stringify(c), String.raw`[3]`);
|
|
}());
|
|
|
|
(function () {
|
|
var iter = iterator([1, 2, 3]);
|
|
var [a, b, c, d, ...e] = iter;
|
|
shouldBe(iter.reportNext(), 4);
|
|
shouldBe(iter.reportReturn(), 0);
|
|
shouldBe(a, 1);
|
|
shouldBe(b, 2);
|
|
shouldBe(c, 3);
|
|
shouldBe(d, undefined);
|
|
shouldBe(JSON.stringify(e), String.raw`[]`);
|
|
}());
|
|
|
|
(function () {
|
|
var iter = iterator([1, 2, 3]);
|
|
var a, b;
|
|
[...[a, b]] = iter;
|
|
shouldBe(iter.reportNext(), 4);
|
|
shouldBe(iter.reportReturn(), 0);
|
|
shouldBe(a, 1);
|
|
shouldBe(b, 2);
|
|
}());
|