blob: 05f9fbed26a277516db3fdcd1ea87c23ad1c3a15 [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
// ES7 Object Prototype object has an immutable [[Prototype]] internal slot
// See: 19.1.3 Properties of the Object Prototype Object
// See: 9.4.7 Immutable Prototype Exotic Objects
WScript.LoadScriptFile("..\\UnitTestFramework\\UnitTestFramework.js");
var tests = [
{
name: "Not okay to set Object.prototype.[[Prototype]] using __proto__",
body: function () {
var objectPrototypeObject = Object.getPrototypeOf(Object.prototype)
var b = Object.create(null)
assert.throws(function () { Object.prototype.__proto__ = b },
TypeError,
"It should not be okay to set Object.prototype.[[Prototype]] using __proto__",
"Can't set the prototype of this object.")
assert.areEqual(objectPrototypeObject, Object.prototype.__proto__, "Object.prototype.__proto__ is unchanged")
assert.areEqual(objectPrototypeObject, Object.getPrototypeOf(Object.prototype), "Object.getPrototypeOf(Object.prototype) is unchanged")
}
},
{
name: "Not okay to set Object.prototype.[[Prototype]] using Object.setPrototypeOf",
body: function () {
var objectPrototypeObject = Object.getPrototypeOf(Object.prototype)
var b = Object.create(null)
assert.throws(function () { Object.setPrototypeOf(Object.prototype, b) },
TypeError,
"It should not be okay to set Object.prototype.[[Prototype]] using Object.setPrototypeOf",
"Can't set the prototype of this object.")
assert.areEqual(objectPrototypeObject, Object.prototype.__proto__, "Object.prototype.__proto__ is unchanged")
assert.areEqual(objectPrototypeObject, Object.getPrototypeOf(Object.prototype), "Object.getPrototypeOf(Object.prototype) is unchanged")
}
},
];
testRunner.runTests(tests, { verbose: WScript.Arguments[0] != "summary" });