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)
158 lines
3.5 KiB
JavaScript
158 lines
3.5 KiB
JavaScript
function shouldBe(actual, expected) {
|
|
if (actual !== expected)
|
|
throw new Error('bad value: ' + actual);
|
|
}
|
|
|
|
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 [] = iter;
|
|
shouldBe(iter.reportNext(), 0);
|
|
shouldBe(iter.reportReturn(), 1);
|
|
}());
|
|
|
|
(function () {
|
|
var iter = iterator([1, 2, 3]);
|
|
var [,] = iter;
|
|
shouldBe(iter.reportNext(), 1);
|
|
shouldBe(iter.reportReturn(), 1);
|
|
}());
|
|
|
|
(function () {
|
|
var iter = iterator([1, 2, 3]);
|
|
var [,,] = iter;
|
|
shouldBe(iter.reportNext(), 2);
|
|
shouldBe(iter.reportReturn(), 1);
|
|
}());
|
|
|
|
(function () {
|
|
var iter = iterator([1, 2, 3]);
|
|
var [,,,] = iter;
|
|
shouldBe(iter.reportNext(), 3);
|
|
shouldBe(iter.reportReturn(), 1);
|
|
}());
|
|
|
|
(function () {
|
|
var iter = iterator([1, 2, 3]);
|
|
var [,,,,] = iter;
|
|
shouldBe(iter.reportNext(), 4);
|
|
shouldBe(iter.reportReturn(), 0);
|
|
}());
|
|
|
|
(function () {
|
|
var iter = iterator([1, 2, 3]);
|
|
var [,,,,,] = iter;
|
|
shouldBe(iter.reportNext(), 4);
|
|
shouldBe(iter.reportReturn(), 0);
|
|
}());
|
|
|
|
(function () {
|
|
var iter = iterator([1, 2, 3]);
|
|
var [,a,] = iter;
|
|
shouldBe(iter.reportNext(), 2);
|
|
shouldBe(iter.reportReturn(), 1);
|
|
shouldBe(a, 2);
|
|
}());
|
|
|
|
(function () {
|
|
var iter = iterator([1, 2, 3]);
|
|
var [a,] = iter;
|
|
shouldBe(iter.reportNext(), 1);
|
|
shouldBe(iter.reportReturn(), 1);
|
|
shouldBe(a, 1);
|
|
}());
|
|
|
|
(function () {
|
|
var iter = iterator([1, 2, 3]);
|
|
var [a,,] = iter;
|
|
shouldBe(iter.reportNext(), 2);
|
|
shouldBe(iter.reportReturn(), 1);
|
|
shouldBe(a, 1);
|
|
}());
|
|
|
|
(function () {
|
|
var iter = iterator([1, 2, 3]);
|
|
var [a,b = 42,] = iter;
|
|
shouldBe(iter.reportNext(), 2);
|
|
shouldBe(iter.reportReturn(), 1);
|
|
shouldBe(a, 1);
|
|
shouldBe(b, 2);
|
|
}());
|
|
|
|
(function () {
|
|
var {} = { Cocoa: 15, Cappuccino: 13 };
|
|
}());
|
|
|
|
(function () {
|
|
var {Cocoa,} = { Cocoa: 15, Cappuccino: 13 };
|
|
shouldBe(Cocoa, 15);
|
|
}());
|
|
|
|
(function () {
|
|
var {Cocoa = 'Cocoa',} = { Cocoa: 15, Cappuccino: 13 };
|
|
shouldBe(Cocoa, 15);
|
|
}());
|
|
|
|
(function () {
|
|
var {Cocoa, Kilimanjaro = 'Coffee'} = { Cocoa: 15, Cappuccino: 13 };
|
|
shouldBe(Cocoa, 15);
|
|
shouldBe(Kilimanjaro, 'Coffee');
|
|
}());
|
|
|
|
(function () {
|
|
var {Cocoa, Kilimanjaro = 'Coffee'} = {};
|
|
shouldBe(Cocoa, undefined);
|
|
shouldBe(Kilimanjaro, 'Coffee');
|
|
}());
|
|
|
|
(function () {
|
|
var {Cocoa, Kilimanjaro = 'Coffee',} = { Cocoa: 15, Cappuccino: 13 };
|
|
shouldBe(Cocoa, 15);
|
|
shouldBe(Kilimanjaro, 'Coffee');
|
|
}());
|
|
|
|
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));
|
|
}
|
|
|
|
testSyntaxError(String.raw`var {,} = {Cocoa: 15}`, String.raw`SyntaxError: Unexpected token ','. Expected a property name.`);
|
|
testSyntaxError(String.raw`var {,} = {}`, String.raw`SyntaxError: Unexpected token ','. Expected a property name.`);
|