Bug 963641 - Add a test for __proto__ in destructuring patterns as a shorthand. r=jorendorff

--HG--
extra : rebase_source : 9d9e5ede1195b7e879a8ca539c9af432c5f2b5d9
This commit is contained in:
Jeff Walden 2014-01-28 10:38:29 -08:00
Родитель 45c5e06002
Коммит 7690017277
1 изменённых файлов: 85 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,85 @@
/*
* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/licenses/publicdomain/
*/
var gTestfile = 'destructuring-for-inof-__proto__.js';
var BUGNUMBER = 963641;
var summary =
"__proto__ should work in destructuring patterns as the targets of " +
"for-in/for-of loops";
print(BUGNUMBER + ": " + summary);
/**************
* BEGIN TEST *
**************/
function objectWithProtoProperty(v)
{
var obj = {};
return Object.defineProperty(obj, "__proto__",
{
enumerable: true,
configurable: true,
writable: true,
value: v
});
}
function* objectWithProtoGenerator(v)
{
yield objectWithProtoProperty(v);
}
function* identityGenerator(v)
{
yield v;
}
for (var { __proto__: target } of objectWithProtoGenerator(null))
assertEq(target, null);
for ({ __proto__: target } of objectWithProtoGenerator("aacchhorrt"))
assertEq(target, "aacchhorrt");
for ({ __proto__: target } of identityGenerator(42))
assertEq(target, Number.prototype);
for (var { __proto__: target } in { prop: "kneedle" })
assertEq(target, String.prototype);
for ({ __proto__: target } in { prop: "snork" })
assertEq(target, String.prototype);
for ({ __proto__: target } in { prop: "ohia" })
assertEq(target, String.prototype);
function nested()
{
for (var { __proto__: target } of objectWithProtoGenerator(null))
assertEq(target, null);
for ({ __proto__: target } of objectWithProtoGenerator("aacchhorrt"))
assertEq(target, "aacchhorrt");
for ({ __proto__: target } of identityGenerator(42))
assertEq(target, Number.prototype);
for (var { __proto__: target } in { prop: "kneedle" })
assertEq(target, String.prototype);
for ({ __proto__: target } in { prop: "snork" })
assertEq(target, String.prototype);
for ({ __proto__: target } in { prop: "ohia" })
assertEq(target, String.prototype);
}
nested();
/******************************************************************************/
if (typeof reportCompare === "function")
reportCompare(true, true);
print("Tests complete");