mirror of https://github.com/tc39/test262.git
rewrite tests to work in strict mode, use helpers
This commit is contained in:
parent
fc10b8c607
commit
9824be6825
|
@ -9,21 +9,14 @@ es5id: 15.2.3.5-4-100
|
|||
description: >
|
||||
Object.create - 'configurable' property of one property in
|
||||
'Properties' is not present (8.10.5 step 4)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
value: "ownDataProperty"
|
||||
}
|
||||
});
|
||||
|
||||
var result1 = newObj.hasOwnProperty("prop");
|
||||
delete newObj.prop;
|
||||
var result2 = newObj.hasOwnProperty("prop");
|
||||
|
||||
return result1 === true && result2 === true;
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
value: "ownDataProperty"
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"), "expected newObj to have 'prop'");
|
||||
verifyNotConfigurable(newObj, "prop");
|
||||
|
|
|
@ -9,21 +9,14 @@ es5id: 15.2.3.5-4-101
|
|||
description: >
|
||||
Object.create - 'configurable' property of one property in
|
||||
'Properties' is own data property (8.10.5 step 4.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
configurable: false
|
||||
}
|
||||
});
|
||||
|
||||
var result1 = newObj.hasOwnProperty("prop");
|
||||
delete newObj.prop;
|
||||
var result2 = newObj.hasOwnProperty("prop");
|
||||
|
||||
return result1 === true && result2 === true;
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
configurable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(newObj, "prop");
|
||||
|
|
|
@ -10,30 +10,25 @@ description: >
|
|||
Object.create - 'configurable' property of one property in
|
||||
'Properties' is own data property that overrides an inherited data
|
||||
property (8.10.5 step 4.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var proto = {
|
||||
configurable: true
|
||||
};
|
||||
|
||||
var proto = {
|
||||
configurable: true
|
||||
};
|
||||
var ConstructFun = function () { };
|
||||
ConstructFun.prototype = proto;
|
||||
var descObj = new ConstructFun();
|
||||
|
||||
var ConstructFun = function () { };
|
||||
ConstructFun.prototype = proto;
|
||||
var descObj = new ConstructFun();
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
value: false
|
||||
});
|
||||
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
value: false
|
||||
});
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
var result1 = newObj.hasOwnProperty("prop");
|
||||
delete newObj.prop;
|
||||
var result2 = newObj.hasOwnProperty("prop");
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(newObj, "prop");
|
||||
|
||||
return result1 === true && result2 === true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
|
|
|
@ -10,33 +10,27 @@ description: >
|
|||
Object.create - 'configurable' property of one property in
|
||||
'Properties' is own data property that overrides an inherited
|
||||
accessor property (8.10.5 step 4.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var proto = {};
|
||||
Object.defineProperty(proto, "configurable", {
|
||||
get: function () {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
var ConstructFun = function () { };
|
||||
ConstructFun.prototype = proto;
|
||||
var descObj = new ConstructFun();
|
||||
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
value: false
|
||||
});
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
var result1 = newObj.hasOwnProperty("prop");
|
||||
delete newObj.prop;
|
||||
var result2 = newObj.hasOwnProperty("prop");
|
||||
|
||||
return result1 === true && result2 === true;
|
||||
var proto = {};
|
||||
Object.defineProperty(proto, "configurable", {
|
||||
get: function () {
|
||||
return true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
var ConstructFun = function () { };
|
||||
ConstructFun.prototype = proto;
|
||||
var descObj = new ConstructFun();
|
||||
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
value: false
|
||||
});
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(newObj, "prop");
|
||||
|
|
|
@ -10,32 +10,27 @@ description: >
|
|||
Object.create - 'configurable' property of one property in
|
||||
'Properties' is own accessor property that overrides an inherited
|
||||
data property (8.10.5 step 4.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var proto = {
|
||||
configurable: true
|
||||
};
|
||||
|
||||
var proto = {
|
||||
configurable: true
|
||||
};
|
||||
var ConstructFun = function () { };
|
||||
ConstructFun.prototype = proto;
|
||||
var descObj = new ConstructFun();
|
||||
|
||||
var ConstructFun = function () { };
|
||||
ConstructFun.prototype = proto;
|
||||
var descObj = new ConstructFun();
|
||||
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
get: function () {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
var result1 = newObj.hasOwnProperty("prop");
|
||||
delete newObj.prop;
|
||||
var result2 = newObj.hasOwnProperty("prop");
|
||||
|
||||
return result1 === true && result2 === true;
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
get: function () {
|
||||
return false;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(newObj, "prop");
|
||||
|
||||
|
|
|
@ -10,35 +10,29 @@ description: >
|
|||
Object.create - 'configurable' property of one property in
|
||||
'Properties' is own accessor property that overrides an inherited
|
||||
accessor property (8.10.5 step 4.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var proto = {};
|
||||
Object.defineProperty(proto, "configurable", {
|
||||
get: function () {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
var ConstructFun = function () { };
|
||||
ConstructFun.prototype = proto;
|
||||
var descObj = new ConstructFun();
|
||||
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
get: function () {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
var result1 = newObj.hasOwnProperty("prop");
|
||||
delete newObj.prop;
|
||||
var result2 = newObj.hasOwnProperty("prop");
|
||||
|
||||
return result1 === true && result2 === true;
|
||||
var proto = {};
|
||||
Object.defineProperty(proto, "configurable", {
|
||||
get: function () {
|
||||
return true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
var ConstructFun = function () { };
|
||||
ConstructFun.prototype = proto;
|
||||
var descObj = new ConstructFun();
|
||||
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
get: function () {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(newObj, "prop");
|
||||
|
|
|
@ -10,23 +10,17 @@ description: >
|
|||
Object.create - 'configurable' property of one property in
|
||||
'Properties' is own accessor property without a get function
|
||||
(8.10.5 step 4.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var descObj = {};
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
set: function () { }
|
||||
});
|
||||
|
||||
var descObj = {};
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
set: function () { }
|
||||
});
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
var result1 = newObj.hasOwnProperty("prop");
|
||||
delete newObj.prop;
|
||||
var result2 = newObj.hasOwnProperty("prop");
|
||||
|
||||
return result1 === true && result2 === true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(newObj, "prop");
|
||||
|
|
|
@ -10,33 +10,27 @@ description: >
|
|||
Object.create - 'configurable' property of one property in
|
||||
'Properties' is own accessor property without a get function,
|
||||
which overrides an inherited accessor property (8.10.5 step 4.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var proto = {};
|
||||
Object.defineProperty(proto, "configurable", {
|
||||
get: function () {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
var ConstructFun = function () { };
|
||||
ConstructFun.prototype = proto;
|
||||
var descObj = new ConstructFun();
|
||||
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
set: function () { }
|
||||
});
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
var result1 = newObj.hasOwnProperty("prop");
|
||||
delete newObj.prop;
|
||||
var result2 = newObj.hasOwnProperty("prop");
|
||||
|
||||
return result1 === true && result2 === true;
|
||||
var proto = {};
|
||||
Object.defineProperty(proto, "configurable", {
|
||||
get: function () {
|
||||
return true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
var ConstructFun = function () { };
|
||||
ConstructFun.prototype = proto;
|
||||
var descObj = new ConstructFun();
|
||||
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
set: function () { }
|
||||
});
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(newObj, "prop");
|
||||
|
|
|
@ -10,28 +10,22 @@ description: >
|
|||
Object.create - 'configurable' property of one property in
|
||||
'Properties' is an inherited accessor property without a get
|
||||
function (8.10.5 step 4.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var proto = {};
|
||||
|
||||
var proto = {};
|
||||
Object.defineProperty(proto, "configurable", {
|
||||
set: function () { }
|
||||
});
|
||||
|
||||
Object.defineProperty(proto, "configurable", {
|
||||
set: function () { }
|
||||
});
|
||||
var ConstructFun = function () { };
|
||||
ConstructFun.prototype = proto;
|
||||
var descObj = new ConstructFun();
|
||||
|
||||
var ConstructFun = function () { };
|
||||
ConstructFun.prototype = proto;
|
||||
var descObj = new ConstructFun();
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
var result1 = newObj.hasOwnProperty("prop");
|
||||
delete newObj.prop;
|
||||
var result2 = newObj.hasOwnProperty("prop");
|
||||
|
||||
return result1 === true && result2 === true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(newObj, "prop");
|
||||
|
|
|
@ -9,21 +9,15 @@ es5id: 15.2.3.5-4-125
|
|||
description: >
|
||||
Object.create - 'configurable' property of one property in
|
||||
'Properties' is undefined (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
configurable: undefined
|
||||
}
|
||||
});
|
||||
|
||||
var result1 = newObj.hasOwnProperty("prop");
|
||||
delete newObj.prop;
|
||||
var result2 = newObj.hasOwnProperty("prop");
|
||||
|
||||
return result1 === true && result2 === true;
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
configurable: undefined
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(newObj, "prop");
|
||||
|
|
|
@ -9,23 +9,14 @@ es5id: 15.2.3.5-4-126
|
|||
description: >
|
||||
Object.create - 'configurable' property of one property in
|
||||
'Properties' is null (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
configurable: null
|
||||
}
|
||||
});
|
||||
|
||||
var beforeDeleted = newObj.hasOwnProperty("prop");
|
||||
|
||||
delete newObj.prop;
|
||||
|
||||
var afterDeleted = newObj.hasOwnProperty("prop");
|
||||
|
||||
return beforeDeleted === true && afterDeleted === true;
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
configurable: null
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(newObj, "prop");
|
||||
|
|
|
@ -9,23 +9,14 @@ es5id: 15.2.3.5-4-128
|
|||
description: >
|
||||
Object.create - 'configurable' property of one property in
|
||||
'Properties' is false (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
configurable: false
|
||||
}
|
||||
});
|
||||
|
||||
var beforeDeleted = newObj.hasOwnProperty("prop");
|
||||
|
||||
delete newObj.prop;
|
||||
|
||||
var afterDeleted = newObj.hasOwnProperty("prop");
|
||||
|
||||
return beforeDeleted === true && afterDeleted === true;
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
configurable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(newObj, "prop");
|
||||
|
|
|
@ -9,23 +9,14 @@ es5id: 15.2.3.5-4-129
|
|||
description: >
|
||||
Object.create - 'configurable' property of one property in
|
||||
'Properties' is 0 (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
configurable: 0
|
||||
}
|
||||
});
|
||||
|
||||
var beforeDeleted = newObj.hasOwnProperty("prop");
|
||||
|
||||
delete newObj.prop;
|
||||
|
||||
var afterDeleted = newObj.hasOwnProperty("prop");
|
||||
|
||||
return beforeDeleted === true && afterDeleted === true;
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
configurable: 0
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(newObj, "prop");
|
||||
|
|
|
@ -9,23 +9,15 @@ es5id: 15.2.3.5-4-130
|
|||
description: >
|
||||
Object.create - 'configurable' property of one property in
|
||||
'Properties' is +0 (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
configurable: +0
|
||||
}
|
||||
});
|
||||
|
||||
var beforeDeleted = newObj.hasOwnProperty("prop");
|
||||
|
||||
delete newObj.prop;
|
||||
|
||||
var afterDeleted = newObj.hasOwnProperty("prop");
|
||||
|
||||
return beforeDeleted === true && afterDeleted === true;
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
configurable: +0
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(newObj, "prop");
|
||||
|
|
|
@ -9,23 +9,14 @@ es5id: 15.2.3.5-4-131
|
|||
description: >
|
||||
Object.create - 'configurable' property of one property in
|
||||
'Properties' is -0 (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
configurable: -0
|
||||
}
|
||||
});
|
||||
|
||||
var beforeDeleted = newObj.hasOwnProperty("prop");
|
||||
|
||||
delete newObj.prop;
|
||||
|
||||
var afterDeleted = newObj.hasOwnProperty("prop");
|
||||
|
||||
return beforeDeleted === true && afterDeleted === true;
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
configurable: -0
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(newObj, "prop");
|
||||
|
|
|
@ -9,23 +9,14 @@ es5id: 15.2.3.5-4-132
|
|||
description: >
|
||||
Object.create - 'configurable' property of one property in
|
||||
'Properties' is NaN (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
configurable: NaN
|
||||
}
|
||||
});
|
||||
|
||||
var beforeDeleted = newObj.hasOwnProperty("prop");
|
||||
|
||||
delete newObj.prop;
|
||||
|
||||
var afterDeleted = newObj.hasOwnProperty("prop");
|
||||
|
||||
return beforeDeleted === true && afterDeleted === true;
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
configurable: NaN
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(newObj, "prop");
|
||||
|
|
|
@ -9,23 +9,14 @@ es5id: 15.2.3.5-4-135
|
|||
description: >
|
||||
Object.create - 'configurable' property of one property in
|
||||
'Properties' is an empty string (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
configurable: ""
|
||||
}
|
||||
});
|
||||
|
||||
var beforeDeleted = newObj.hasOwnProperty("prop");
|
||||
|
||||
delete newObj.prop;
|
||||
|
||||
var afterDeleted = newObj.hasOwnProperty("prop");
|
||||
|
||||
return beforeDeleted === true && afterDeleted === true;
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
configurable: ""
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(newObj, "prop");
|
||||
|
|
|
@ -9,23 +9,14 @@ es5id: 15.2.3.5-4-179
|
|||
description: >
|
||||
Object.create - 'writable' property of one property in
|
||||
'Properties' is not present (8.10.5 step 6)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
value: 100
|
||||
}
|
||||
});
|
||||
|
||||
var beforeWrite = (newObj.prop === 100);
|
||||
|
||||
newObj.prop = "isWritable";
|
||||
|
||||
var afterWrite = (newObj.prop === 100);
|
||||
|
||||
return beforeWrite === true && afterWrite === true;
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
value: 100
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert.sameValue(newObj.prop, 100);
|
||||
verifyNotWritable(newObj, "prop");
|
||||
|
|
|
@ -10,27 +10,18 @@ description: >
|
|||
Object.create - 'writable' property of one property in
|
||||
'Properties' is own accessor property without a get function
|
||||
(8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var descObj = { value: 100 };
|
||||
|
||||
var descObj = { value: 100 };
|
||||
Object.defineProperty(descObj, "writable", {
|
||||
set: function () { }
|
||||
});
|
||||
|
||||
Object.defineProperty(descObj, "writable", {
|
||||
set: function () { }
|
||||
});
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
var beforeWrite = (newObj.prop === 100);
|
||||
|
||||
newObj.prop = "isWritable";
|
||||
|
||||
var afterWrite = (newObj.prop === 100);
|
||||
|
||||
return beforeWrite === true && afterWrite === true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert.sameValue(newObj.prop, 100);
|
||||
verifyNotWritable(newObj, "prop");
|
||||
|
|
|
@ -10,38 +10,30 @@ description: >
|
|||
Object.create - 'writable' property of one property in
|
||||
'Properties' is own accessor property without a get function,
|
||||
which overrides an inherited accessor property (8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var proto = {};
|
||||
|
||||
var proto = {};
|
||||
|
||||
Object.defineProperty(proto, "writable", {
|
||||
get: function () {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
var ConstructFun = function () { };
|
||||
ConstructFun.prototype = proto;
|
||||
|
||||
var descObj = new ConstructFun();
|
||||
|
||||
Object.defineProperty(descObj, "writable", {
|
||||
set: function () { }
|
||||
});
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
var beforeWrite = (newObj.hasOwnProperty("prop") && typeof (newObj.prop) === "undefined");
|
||||
|
||||
newObj.prop = "isWritable";
|
||||
|
||||
var afterWrite = (newObj.prop === "isWritable");
|
||||
|
||||
return beforeWrite === true && afterWrite === false;
|
||||
Object.defineProperty(proto, "writable", {
|
||||
get: function () {
|
||||
return true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
var ConstructFun = function () { };
|
||||
ConstructFun.prototype = proto;
|
||||
|
||||
var descObj = new ConstructFun();
|
||||
|
||||
Object.defineProperty(descObj, "writable", {
|
||||
set: function () { }
|
||||
});
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"))
|
||||
assert.sameValue(typeof (newObj.prop), "undefined");
|
||||
verifyNotWritable(newObj, "prop");
|
||||
|
|
|
@ -10,32 +10,23 @@ description: >
|
|||
Object.create - 'writable' property of one property in
|
||||
'Properties' is an inherited accessor property without a get
|
||||
function (8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var proto = { value: 100 };
|
||||
|
||||
var proto = { value: 100 };
|
||||
Object.defineProperty(proto, "writable", {
|
||||
set: function () { }
|
||||
});
|
||||
|
||||
Object.defineProperty(proto, "writable", {
|
||||
set: function () { }
|
||||
});
|
||||
var ConstructFun = function () { };
|
||||
ConstructFun.prototype = proto;
|
||||
|
||||
var ConstructFun = function () { };
|
||||
ConstructFun.prototype = proto;
|
||||
var descObj = new ConstructFun();
|
||||
|
||||
var descObj = new ConstructFun();
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
var beforeWrite = (newObj.prop === 100);
|
||||
|
||||
newObj.prop = "isWritable";
|
||||
|
||||
var afterWrite = (newObj.prop === 100);
|
||||
|
||||
return beforeWrite === true && afterWrite === true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert.sameValue(newObj.prop, 100);
|
||||
verifyNotWritable(newObj, "prop");
|
||||
|
|
|
@ -9,20 +9,15 @@ es5id: 15.2.3.5-4-204
|
|||
description: >
|
||||
Object.create - 'writable' property of one property in
|
||||
'Properties' is undefined (8.10.5 step 6.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
writable: undefined
|
||||
}
|
||||
});
|
||||
|
||||
var hasProperty = newObj.hasOwnProperty("prop") && typeof newObj.prop === "undefined";
|
||||
|
||||
newObj.prop = 121;
|
||||
|
||||
return hasProperty && typeof newObj.prop === "undefined";
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
writable: undefined
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
assert.sameValue(typeof newObj.prop, "undefined");
|
||||
verifyNotWritable(newObj, "prop");
|
||||
|
|
|
@ -9,20 +9,15 @@ es5id: 15.2.3.5-4-205
|
|||
description: >
|
||||
Object.create - 'writable' property of one property in
|
||||
'Properties' is null (8.10.5 step 6.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
writable: null
|
||||
}
|
||||
});
|
||||
var hasProperty = newObj.hasOwnProperty("prop") && typeof newObj.prop === "undefined";
|
||||
|
||||
newObj.prop = 121;
|
||||
|
||||
return hasProperty && typeof newObj.prop === "undefined";
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
writable: null
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
assert.sameValue(typeof newObj.prop, "undefined");
|
||||
verifyNotWritable(newObj, "prop");
|
||||
|
|
|
@ -9,20 +9,15 @@ es5id: 15.2.3.5-4-207
|
|||
description: >
|
||||
Object.create - 'writable' property of one property in
|
||||
'Properties' is false (8.10.5 step 6.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
writable: false
|
||||
}
|
||||
});
|
||||
var hasProperty = newObj.hasOwnProperty("prop") && typeof newObj.prop === "undefined";
|
||||
|
||||
newObj.prop = 121;
|
||||
|
||||
return hasProperty && typeof newObj.prop === "undefined";
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
writable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
assert.sameValue(typeof newObj.prop, "undefined");
|
||||
verifyNotWritable(newObj, "prop");
|
||||
|
|
|
@ -9,20 +9,15 @@ es5id: 15.2.3.5-4-208
|
|||
description: >
|
||||
Object.create - 'writable' property of one property in
|
||||
'Properties' is 0 (8.10.5 step 6.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
writable: 0
|
||||
}
|
||||
});
|
||||
var hasProperty = newObj.hasOwnProperty("prop") && typeof newObj.prop === "undefined";
|
||||
|
||||
newObj.prop = 121;
|
||||
|
||||
return hasProperty && typeof newObj.prop === "undefined";
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
writable: 0
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
assert.sameValue(typeof newObj.prop, "undefined");
|
||||
verifyNotWritable(newObj, "prop");
|
||||
|
|
|
@ -9,20 +9,15 @@ es5id: 15.2.3.5-4-209
|
|||
description: >
|
||||
Object.create - 'writable' property of one property in
|
||||
'Properties' is +0 (8.10.5 step 6.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
writable: +0
|
||||
}
|
||||
});
|
||||
var hasProperty = newObj.hasOwnProperty("prop") && typeof newObj.prop === "undefined";
|
||||
|
||||
newObj.prop = 121;
|
||||
|
||||
return hasProperty && typeof newObj.prop === "undefined";
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
writable: +0
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
assert.sameValue(typeof newObj.prop, "undefined");
|
||||
verifyNotWritable(newObj, "prop");
|
||||
|
|
|
@ -9,20 +9,15 @@ es5id: 15.2.3.5-4-210
|
|||
description: >
|
||||
Object.create - 'writable' property of one property in
|
||||
'Properties' is -0 (8.10.5 step 6.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
writable: -0
|
||||
}
|
||||
});
|
||||
var hasProperty = newObj.hasOwnProperty("prop") && typeof newObj.prop === "undefined";
|
||||
|
||||
newObj.prop = 121;
|
||||
|
||||
return hasProperty && typeof newObj.prop === "undefined";
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
writable: -0
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"))
|
||||
assert.sameValue(typeof newObj.prop, "undefined");
|
||||
verifyNotWritable(newObj, "prop");
|
||||
|
|
|
@ -9,20 +9,15 @@ es5id: 15.2.3.5-4-211
|
|||
description: >
|
||||
Object.create - 'writable' property of one property in
|
||||
'Properties' is NaN (8.10.5 step 6.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
writable: NaN
|
||||
}
|
||||
});
|
||||
var hasProperty = newObj.hasOwnProperty("prop") && typeof newObj.prop === "undefined";
|
||||
|
||||
newObj.prop = 121;
|
||||
|
||||
return hasProperty && typeof newObj.prop === "undefined";
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
writable: NaN
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
assert.sameValue(typeof newObj.prop, "undefined")
|
||||
verifyNotWritable(newObj, "prop");
|
||||
|
|
|
@ -9,21 +9,17 @@ es5id: 15.2.3.5-4-214
|
|||
description: >
|
||||
Object.create - 'writable' property of one property in
|
||||
'Properties' is an empty string (8.10.5 step 6.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var descObj = {
|
||||
writable: ""
|
||||
};
|
||||
var descObj = {
|
||||
writable: ""
|
||||
};
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
var hasProperty = newObj.hasOwnProperty("prop") && typeof newObj.prop === "undefined";
|
||||
var newObj = Object.create({}, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
newObj.prop = 121;
|
||||
|
||||
return hasProperty && typeof newObj.prop === "undefined";
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert(newObj.hasOwnProperty("prop"))
|
||||
assert.sameValue(typeof newObj.prop, "undefined");
|
||||
verifyNotWritable(newObj, "prop");
|
||||
|
|
|
@ -9,22 +9,16 @@ es5id: 15.2.3.5-4-267
|
|||
description: >
|
||||
Object.create - 'set' property of one property in 'Properties' is
|
||||
not present (8.10.5 step 8)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
get: function () {
|
||||
return "data";
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var hasProperty = newObj.hasOwnProperty("prop");
|
||||
|
||||
newObj.prop = "overrideData";
|
||||
|
||||
return hasProperty && newObj.prop === "data";
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
get: function () {
|
||||
return "data";
|
||||
}
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotWritable(newObj, "prop");
|
||||
|
|
|
@ -9,19 +9,14 @@ es5id: 15.2.3.5-4-292
|
|||
description: >
|
||||
Object.create - 'set' property of one property in 'Properties' is
|
||||
undefined (8.10.5 step 8.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
set: undefined
|
||||
}
|
||||
});
|
||||
|
||||
newObj.prop = "overrideData";
|
||||
|
||||
return newObj.hasOwnProperty("prop") && typeof (newObj.prop) === "undefined";
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
set: undefined
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotWritable(newObj, "prop");
|
||||
|
|
|
@ -9,22 +9,16 @@ es5id: 15.2.3.5-4-307
|
|||
description: >
|
||||
Object.create - [[Writable]] is set as false if it is absent in
|
||||
data descriptor of one property in 'Properties' (8.12.9 step 4.a.i)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
value: 1001,
|
||||
configurable: true,
|
||||
enumerable: true
|
||||
}
|
||||
});
|
||||
|
||||
var hasProperty = newObj.hasOwnProperty("prop");
|
||||
|
||||
newObj.prop = 12;
|
||||
|
||||
return hasProperty && newObj.prop === 1001;
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
value: 1001,
|
||||
configurable: true,
|
||||
enumerable: true
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotWritable(newObj, "prop");
|
||||
|
|
|
@ -10,26 +10,17 @@ description: >
|
|||
Object.create - [[Configurable]] is set as false if it is absent
|
||||
in data descriptor of one property in 'Properties' (8.12.9 step
|
||||
4.a.i)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var isNotConfigurable = false;
|
||||
|
||||
try {
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
value: 1001,
|
||||
writable: true,
|
||||
enumerable: true
|
||||
}
|
||||
});
|
||||
var hasProperty = newObj.hasOwnProperty("prop");
|
||||
delete newObj.prop;
|
||||
isNotConfigurable = newObj.hasOwnProperty("prop");
|
||||
return hasProperty && isNotConfigurable;
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
value: 1001,
|
||||
writable: true,
|
||||
enumerable: true
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(newObj, "prop");
|
||||
|
||||
|
|
|
@ -10,20 +10,16 @@ description: >
|
|||
Object.create - [[Configurable]] is set as false if it is absent
|
||||
in accessor descriptor of one property in 'Properties' (8.12.9
|
||||
step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
set: function () { },
|
||||
get: function () { },
|
||||
enumerable: true
|
||||
}
|
||||
});
|
||||
var hasProperty = newObj.hasOwnProperty("prop");
|
||||
delete newObj.prop;
|
||||
var isNotConfigurable = newObj.hasOwnProperty("prop");
|
||||
return hasProperty && isNotConfigurable;
|
||||
var newObj = Object.create({}, {
|
||||
prop: {
|
||||
set: function () { },
|
||||
get: function () { },
|
||||
enumerable: true
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(newObj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(newObj, "prop");
|
||||
|
|
|
@ -9,20 +9,16 @@ es5id: 15.2.3.7-5-b-138
|
|||
description: >
|
||||
Object.defineProperties - 'writable' property of 'descObj' is
|
||||
present (8.10.5 step 6)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
writable: false
|
||||
}
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
writable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
|
|
@ -9,20 +9,16 @@ es5id: 15.2.3.7-5-b-139
|
|||
description: >
|
||||
Object.defineProperties - 'writable' property of 'descObj' is not
|
||||
present (8.10.5 step 6)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
value: "abc"
|
||||
}
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.property === "abc";
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
value: "abc"
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
verifyNotWritable(obj, "property");
|
||||
|
||||
|
|
|
@ -9,20 +9,17 @@ es5id: 15.2.3.7-5-b-140
|
|||
description: >
|
||||
Object.defineProperties - 'writable' property of 'descObj' is own
|
||||
data property (8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
writable: false
|
||||
}
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
writable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
||||
|
|
|
@ -9,27 +9,23 @@ es5id: 15.2.3.7-5-b-141
|
|||
description: >
|
||||
Object.defineProperties - 'writable' property of 'descObj' is
|
||||
inherited data property (8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
var proto = {
|
||||
writable: false
|
||||
};
|
||||
var proto = {
|
||||
writable: false
|
||||
};
|
||||
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
|
||||
var descObj = new Con();
|
||||
var descObj = new Con();
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
|
|
@ -10,29 +10,25 @@ description: >
|
|||
Object.defineProperties - 'writable' property of 'descObj' is own
|
||||
data property that overrides an inherited data property (8.10.5
|
||||
step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
var proto = {
|
||||
writable: true
|
||||
};
|
||||
var proto = {
|
||||
writable: true
|
||||
};
|
||||
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
|
||||
var descObj = new Con();
|
||||
var descObj = new Con();
|
||||
|
||||
descObj.writable = false;
|
||||
descObj.writable = false;
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
|
|
@ -10,35 +10,32 @@ description: >
|
|||
Object.defineProperties - 'writable' property of 'descObj' is own
|
||||
data property that overrides an inherited accessor property
|
||||
(8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
var proto = { value: 120 };
|
||||
var proto = { value: 120 };
|
||||
|
||||
Object.defineProperty(proto, "writable", {
|
||||
get: function () {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
|
||||
var descObj = new Con();
|
||||
|
||||
Object.defineProperty(descObj, "writable", {
|
||||
value: false
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && obj.property === 120;
|
||||
Object.defineProperty(proto, "writable", {
|
||||
get: function () {
|
||||
return true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
|
||||
var descObj = new Con();
|
||||
|
||||
Object.defineProperty(descObj, "writable", {
|
||||
value: false
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
||||
|
|
|
@ -9,26 +9,22 @@ es5id: 15.2.3.7-5-b-144
|
|||
description: >
|
||||
Object.defineProperties - 'writable' property of 'descObj' is own
|
||||
accessor property (8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
var descObj = {};
|
||||
var descObj = {};
|
||||
|
||||
Object.defineProperty(descObj, "writable", {
|
||||
get: function () {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
Object.defineProperty(descObj, "writable", {
|
||||
get: function () {
|
||||
return false;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
|
|
@ -10,33 +10,29 @@ description: >
|
|||
Object.defineProperties - 'writable' property of 'descObj' is own
|
||||
accessor property that overrides an inherited data property
|
||||
(8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
var proto = {
|
||||
writable: true
|
||||
};
|
||||
var proto = {
|
||||
writable: true
|
||||
};
|
||||
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
|
||||
var descObj = new Con();
|
||||
var descObj = new Con();
|
||||
|
||||
Object.defineProperty(descObj, "writable", {
|
||||
get: function () {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
Object.defineProperty(descObj, "writable", {
|
||||
get: function () {
|
||||
return false;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
|
|
@ -10,37 +10,33 @@ description: >
|
|||
Object.defineProperties - 'writable' property of 'descObj' is own
|
||||
accessor property that overrides an inherited accessor property
|
||||
(8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
var proto = {};
|
||||
var proto = {};
|
||||
|
||||
Object.defineProperty(proto, "writable", {
|
||||
get: function () {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
|
||||
var descObj = new Con();
|
||||
|
||||
Object.defineProperty(descObj, "writable", {
|
||||
get: function () {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
Object.defineProperty(proto, "writable", {
|
||||
get: function () {
|
||||
return true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
|
||||
var descObj = new Con();
|
||||
|
||||
Object.defineProperty(descObj, "writable", {
|
||||
get: function () {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
|
|
@ -9,24 +9,20 @@ es5id: 15.2.3.7-5-b-148
|
|||
description: >
|
||||
Object.defineProperties - 'writable' property of 'descObj' is own
|
||||
accessor property without a get function (8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
var descObj = {};
|
||||
var descObj = {};
|
||||
|
||||
Object.defineProperty(descObj, "writable", {
|
||||
set: function () { }
|
||||
});
|
||||
Object.defineProperty(descObj, "writable", {
|
||||
set: function () { }
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
|
|
@ -10,35 +10,31 @@ description: >
|
|||
Object.defineProperties - 'writable' property of 'descObj' is own
|
||||
accessor property without a get function that overrides an
|
||||
inherited accessor property (8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
var proto = {};
|
||||
var proto = {};
|
||||
|
||||
Object.defineProperty(proto, "writable", {
|
||||
get: function () {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
|
||||
var descObj = new Con();
|
||||
|
||||
Object.defineProperty(descObj, "writable", {
|
||||
set: function () { }
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
Object.defineProperty(proto, "writable", {
|
||||
get: function () {
|
||||
return true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
|
||||
var descObj = new Con();
|
||||
|
||||
Object.defineProperty(descObj, "writable", {
|
||||
set: function () { }
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
|
|
@ -10,29 +10,25 @@ description: >
|
|||
Object.defineProperties - 'writable' property of 'descObj' is
|
||||
inherited accessor property without a get function (8.10.5 step
|
||||
6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
var proto = {};
|
||||
var proto = {};
|
||||
|
||||
Object.defineProperty(proto, "writable", {
|
||||
set: function () { }
|
||||
});
|
||||
Object.defineProperty(proto, "writable", {
|
||||
set: function () { }
|
||||
});
|
||||
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
|
||||
var descObj = new Con();
|
||||
var descObj = new Con();
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
|
|
@ -10,24 +10,20 @@ description: >
|
|||
Object.defineProperties - 'descObj' is a Function object which
|
||||
implements its own [[Get]] method to get 'writable' property
|
||||
(8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
var func = function (a, b) {
|
||||
return a + b;
|
||||
};
|
||||
var func = function (a, b) {
|
||||
return a + b;
|
||||
};
|
||||
|
||||
func.writable = false;
|
||||
func.writable = false;
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: func
|
||||
});
|
||||
Object.defineProperties(obj, {
|
||||
property: func
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
|
|
@ -10,22 +10,18 @@ description: >
|
|||
Object.defineProperties - 'descObj' is an Array object which
|
||||
implements its own [[Get]] method to get 'writable' property
|
||||
(8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
var arr = [1, 2, 3];
|
||||
var arr = [1, 2, 3];
|
||||
|
||||
arr.writable = false;
|
||||
arr.writable = false;
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: arr
|
||||
});
|
||||
Object.defineProperties(obj, {
|
||||
property: arr
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
|
|
@ -10,22 +10,18 @@ description: >
|
|||
Object.defineProperties - 'descObj' is a String object which
|
||||
implements its own [[Get]] method to get 'writable' property
|
||||
(8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
var str = new String("abc");
|
||||
var str = new String("abc");
|
||||
|
||||
str.writable = false;
|
||||
str.writable = false;
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: str
|
||||
});
|
||||
Object.defineProperties(obj, {
|
||||
property: str
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
|
|
@ -10,22 +10,18 @@ description: >
|
|||
Object.defineProperties - 'descObj' is a Boolean object which
|
||||
implements its own [[Get]] method to get 'writable' property
|
||||
(8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
var descObj = new Boolean(false);
|
||||
var descObj = new Boolean(false);
|
||||
|
||||
descObj.writable = false;
|
||||
descObj.writable = false;
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
|
|
@ -10,22 +10,18 @@ description: >
|
|||
Object.defineProperties - 'descObj' is a Number object which
|
||||
implements its own [[Get]] method to get 'writable' property
|
||||
(8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
var descObj = new Number(-9);
|
||||
var descObj = new Number(-9);
|
||||
|
||||
descObj.writable = false;
|
||||
descObj.writable = false;
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
|
|
@ -10,25 +10,22 @@ description: >
|
|||
Object.defineProperties - 'descObj' is the Math object which
|
||||
implements its own [[Get]] method to get 'writable' property
|
||||
(8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
try {
|
||||
Math.writable = false;
|
||||
try {
|
||||
Math.writable = false;
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: Math
|
||||
});
|
||||
Object.defineProperties(obj, {
|
||||
property: Math
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
} finally {
|
||||
delete Math.writable;
|
||||
}
|
||||
}
|
||||
runTestCase(testcase);
|
||||
} finally {
|
||||
delete Math.writable;
|
||||
}
|
||||
|
|
|
@ -10,22 +10,18 @@ description: >
|
|||
Object.defineProperties - 'descObj' is a Date object which
|
||||
implements its own [[Get]] method to get 'writable' property
|
||||
(8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
var descObj = new Date();
|
||||
var descObj = new Date();
|
||||
|
||||
descObj.writable = false;
|
||||
descObj.writable = false;
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
|
|
@ -10,22 +10,19 @@ description: >
|
|||
Object.defineProperties - 'descObj' is a RegExp object which
|
||||
implements its own [[Get]] method to get 'writable' property
|
||||
(8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
var descObj = new RegExp();
|
||||
var descObj = new RegExp();
|
||||
|
||||
descObj.writable = false;
|
||||
descObj.writable = false;
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
}
|
||||
runTestCase(testcase);
|
||||
|
|
|
@ -10,25 +10,22 @@ description: >
|
|||
Object.defineProperties - 'descObj' is the JSON object which
|
||||
implements its own [[Get]] method to get 'writable' property
|
||||
(8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
|
||||
var obj = {};
|
||||
try {
|
||||
JSON.writable = false;
|
||||
|
||||
try {
|
||||
JSON.writable = false;
|
||||
Object.defineProperties(obj, {
|
||||
property: JSON
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: JSON
|
||||
});
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
||||
obj.property = "isWritable";
|
||||
} finally {
|
||||
delete JSON.writable;
|
||||
}
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
} finally {
|
||||
delete JSON.writable;
|
||||
}
|
||||
}
|
||||
runTestCase(testcase);
|
||||
|
|
|
@ -10,22 +10,18 @@ description: >
|
|||
Object.defineProperties - 'descObj' is an Error object which
|
||||
implements its own [[Get]] method to get 'writable' property
|
||||
(8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
var descObj = new Error();
|
||||
var descObj = new Error();
|
||||
|
||||
descObj.writable = false;
|
||||
descObj.writable = false;
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
Object.defineProperties(obj, {
|
||||
property: descObj
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
|
|
@ -10,24 +10,21 @@ description: >
|
|||
Object.defineProperties - 'descObj' is the Arguments object which
|
||||
implements its own [[Get]] method to get 'writable' property
|
||||
(8.10.5 step 6.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
var func = function (a, b) {
|
||||
arguments.writable = false;
|
||||
var func = function (a, b) {
|
||||
arguments.writable = false;
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: arguments
|
||||
});
|
||||
Object.defineProperties(obj, {
|
||||
property: arguments
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
};
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
};
|
||||
func();
|
||||
|
||||
return func();
|
||||
}
|
||||
runTestCase(testcase);
|
||||
|
|
|
@ -11,26 +11,25 @@ description: >
|
|||
implements its own [[Get]] method to get 'writable' property
|
||||
(8.10.5 step 6.a)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- propertyHelper.js
|
||||
- fnGlobalObject.js
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
try {
|
||||
fnGlobalObject().writable = false;
|
||||
try {
|
||||
fnGlobalObject().writable = false;
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: fnGlobalObject()
|
||||
});
|
||||
Object.defineProperties(obj, {
|
||||
property: fnGlobalObject()
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
||||
} finally {
|
||||
delete fnGlobalObject().writable;
|
||||
}
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
} finally {
|
||||
delete fnGlobalObject().writable;
|
||||
}
|
||||
}
|
||||
runTestCase(testcase);
|
||||
|
|
|
@ -9,20 +9,16 @@ es5id: 15.2.3.7-5-b-164
|
|||
description: >
|
||||
Object.defineProperties - value of 'writable' property of
|
||||
'descObj' is undefined (8.10.5 step 6.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
writable: undefined
|
||||
}
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
writable: undefined
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
|
|
@ -9,20 +9,16 @@ es5id: 15.2.3.7-5-b-165
|
|||
description: >
|
||||
Object.defineProperties - value of 'writable' property of
|
||||
'descObj' is null (8.10.5 step 6.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
writable: null
|
||||
}
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
writable: null
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
|
|
@ -9,20 +9,17 @@ es5id: 15.2.3.7-5-b-167
|
|||
description: >
|
||||
Object.defineProperties - value of 'writable' property of
|
||||
'descObj' is false (8.10.5 step 6.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
writable: false
|
||||
}
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
writable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
||||
|
|
|
@ -9,20 +9,16 @@ es5id: 15.2.3.7-5-b-168
|
|||
description: >
|
||||
Object.defineProperties - value of 'writable' property of
|
||||
'descObj' is 0 (8.10.5 step 6.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
writable: 0
|
||||
}
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
writable: 0
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
|
|
@ -9,20 +9,17 @@ es5id: 15.2.3.7-5-b-169
|
|||
description: >
|
||||
Object.defineProperties - value of 'writable' property of
|
||||
'descObj' is +0 (8.10.5 step 6.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
writable: +0
|
||||
}
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
writable: +0
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
||||
|
|
|
@ -9,20 +9,17 @@ es5id: 15.2.3.7-5-b-170
|
|||
description: >
|
||||
Object.defineProperties - value of 'writable' property of
|
||||
'descObj' is -0 (8.10.5 step 6.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
writable: -0
|
||||
}
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
writable: -0
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
||||
|
|
|
@ -9,20 +9,17 @@ es5id: 15.2.3.7-5-b-171
|
|||
description: >
|
||||
Object.defineProperties - value of 'writable' property of
|
||||
'descObj' is NaN (8.10.5 step 6.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
writable: NaN
|
||||
}
|
||||
});
|
||||
|
||||
obj.property = "isWritable";
|
||||
|
||||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
writable: NaN
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
|
||||
|
|
|
@ -9,10 +9,9 @@ es5id: 15.2.3.7-5-b-174
|
|||
description: >
|
||||
Object.defineProperties - value of 'writable' property of
|
||||
'descObj' is empty string (8.10.5 step 6.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
|
@ -26,4 +25,6 @@ function testcase() {
|
|||
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
|
||||
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotWritable(obj, "property");
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
|
|
|
@ -9,30 +9,24 @@ es5id: 15.2.3.7-5-b-227
|
|||
description: >
|
||||
Object.defineProperties - 'set' property of 'descObj' is not
|
||||
present (8.10.5 step 8)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var data = "data";
|
||||
var obj = {};
|
||||
var data = "data";
|
||||
var obj = {};
|
||||
|
||||
try {
|
||||
Object.defineProperties(obj, {
|
||||
descObj: {
|
||||
get: function () {
|
||||
return data;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
obj.descObj = "overrideData";
|
||||
|
||||
var desc = Object.getOwnPropertyDescriptor(obj, "descObj");
|
||||
return obj.hasOwnProperty("descObj") && typeof (desc.set) === "undefined" && data === "data";
|
||||
} catch (e) {
|
||||
return false;
|
||||
Object.defineProperties(obj, {
|
||||
descObj: {
|
||||
get: function () {
|
||||
return data;
|
||||
}
|
||||
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
|
||||
assert(obj.hasOwnProperty("descObj"));
|
||||
verifyNotWritable(obj, "descObj");
|
||||
|
||||
var desc = Object.getOwnPropertyDescriptor(obj, "descObj");
|
||||
assert.sameValue(typeof (desc.set), "undefined")
|
||||
|
||||
|
|
|
@ -9,21 +9,15 @@ es5id: 15.2.3.7-5-b-60
|
|||
description: >
|
||||
Object.defineProperties - 'configurable' property of 'descObj' is
|
||||
not present (8.10.5 step 4)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
prop: {}
|
||||
});
|
||||
Object.defineProperties(obj, {
|
||||
prop: {}
|
||||
});
|
||||
|
||||
var result1 = obj.hasOwnProperty("prop");
|
||||
delete obj.prop;
|
||||
var result2 = obj.hasOwnProperty("prop");
|
||||
|
||||
return result1 === true && result2 === true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert(obj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(obj, "prop");
|
||||
|
|
|
@ -10,31 +10,26 @@ description: >
|
|||
Object.defineProperties - 'configurable' property of 'descObj' is
|
||||
own data property that overrides an inherited data property
|
||||
(8.10.5 step 4.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var proto = {
|
||||
configurable: true
|
||||
};
|
||||
var obj = {};
|
||||
var proto = {
|
||||
configurable: true
|
||||
};
|
||||
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
var descObj = new Con();
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
var descObj = new Con();
|
||||
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
value: false
|
||||
});
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
value: false
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
prop: descObj
|
||||
});
|
||||
var result1 = obj.hasOwnProperty("prop");
|
||||
delete obj.prop;
|
||||
var result2 = obj.hasOwnProperty("prop");
|
||||
Object.defineProperties(obj, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
return result1 === true && result2 === true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert(obj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(obj, "prop");
|
||||
|
|
|
@ -10,34 +10,29 @@ description: >
|
|||
Object.defineProperties - 'configurable' property of 'descObj' is
|
||||
own data property that overrides an inherited accessor property
|
||||
(8.10.5 step 4.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var proto = {};
|
||||
Object.defineProperty(proto, "configurable", {
|
||||
get: function () {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
var descObj = new Con();
|
||||
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
value: false
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
prop: descObj
|
||||
});
|
||||
var result1 = obj.hasOwnProperty("prop");
|
||||
delete obj.prop;
|
||||
var result2 = obj.hasOwnProperty("prop");
|
||||
|
||||
return result1 === true && result2 === true;
|
||||
var obj = {};
|
||||
var proto = {};
|
||||
Object.defineProperty(proto, "configurable", {
|
||||
get: function () {
|
||||
return true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
var descObj = new Con();
|
||||
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
value: false
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(obj, "prop");
|
||||
|
|
|
@ -10,33 +10,28 @@ description: >
|
|||
Object.defineProperties - 'configurable' property of 'descObj' is
|
||||
own accessor property that overrides an inherited data property
|
||||
(8.10.5 step 4.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var proto = {
|
||||
configurable: true
|
||||
};
|
||||
var obj = {};
|
||||
var proto = {
|
||||
configurable: true
|
||||
};
|
||||
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
var descObj = new Con();
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
var descObj = new Con();
|
||||
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
get: function () {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
prop: descObj
|
||||
});
|
||||
var result1 = obj.hasOwnProperty("prop");
|
||||
delete obj.prop;
|
||||
var result2 = obj.hasOwnProperty("prop");
|
||||
|
||||
return result1 === true && result2 === true;
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
get: function () {
|
||||
return false;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(obj, "prop");
|
||||
|
|
|
@ -10,10 +10,9 @@ description: >
|
|||
Object.defineProperties - 'configurable' property of 'descObj' is
|
||||
own accessor property that overrides an inherited accessor
|
||||
property (8.10.5 step 4.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var proto = {};
|
||||
|
@ -42,4 +41,3 @@ function testcase() {
|
|||
|
||||
return result1 === true && result2 === true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
|
|
|
@ -9,25 +9,19 @@ es5id: 15.2.3.7-5-b-69
|
|||
description: >
|
||||
Object.defineProperties - 'configurable' property of 'descObj' is
|
||||
own accessor property without a get function (8.10.5 step 4.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
|
||||
var obj = {};
|
||||
var descObj = {};
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
set: function () { }
|
||||
});
|
||||
|
||||
var descObj = {};
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
set: function () { }
|
||||
});
|
||||
Object.defineProperties(obj, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
prop: descObj
|
||||
});
|
||||
var result1 = obj.hasOwnProperty("prop");
|
||||
delete obj.prop;
|
||||
var result2 = obj.hasOwnProperty("prop");
|
||||
|
||||
return result1 === true && result2 === true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert(obj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(obj, "prop");
|
||||
|
|
|
@ -10,34 +10,29 @@ description: >
|
|||
Object.defineProperties - 'configurable' property of 'descObj' is
|
||||
own accessor property without a get function that overrides an
|
||||
inherited accessor property (8.10.5 step 4.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var proto = {};
|
||||
Object.defineProperty(proto, "configurable", {
|
||||
get: function () {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
var descObj = new Con();
|
||||
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
set: function () { }
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
prop: descObj
|
||||
});
|
||||
var result1 = obj.hasOwnProperty("prop");
|
||||
delete obj.prop;
|
||||
var result2 = obj.hasOwnProperty("prop");
|
||||
|
||||
return result1 === true && result2 === true;
|
||||
var obj = {};
|
||||
var proto = {};
|
||||
Object.defineProperty(proto, "configurable", {
|
||||
get: function () {
|
||||
return true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
var descObj = new Con();
|
||||
|
||||
Object.defineProperty(descObj, "configurable", {
|
||||
set: function () { }
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(obj, "prop");
|
||||
|
|
|
@ -10,30 +10,23 @@ description: >
|
|||
Object.defineProperties - 'configurable' property of 'descObj' is
|
||||
inherited accessor property without a get function (8.10.5 step
|
||||
4.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var proto = {};
|
||||
|
||||
var obj = {};
|
||||
var proto = {};
|
||||
Object.defineProperty(proto, "configurable", {
|
||||
set: function () { }
|
||||
});
|
||||
|
||||
Object.defineProperty(proto, "configurable", {
|
||||
set: function () { }
|
||||
});
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
var descObj = new Con();
|
||||
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
var descObj = new Con();
|
||||
Object.defineProperties(obj, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
prop: descObj
|
||||
});
|
||||
|
||||
var result1 = obj.hasOwnProperty("prop");
|
||||
delete obj.prop;
|
||||
var result2 = obj.hasOwnProperty("prop");
|
||||
|
||||
return result1 === true && result2 === true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
assert(obj.hasOwnProperty("prop"));
|
||||
verifyNotConfigurable(obj, "prop");
|
||||
|
|
|
@ -9,22 +9,16 @@ es5id: 15.2.3.7-5-b-85
|
|||
description: >
|
||||
Object.defineProperties - value of 'configurable' property of
|
||||
'descObj' is undefined (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
configurable: undefined
|
||||
}
|
||||
});
|
||||
|
||||
var hadOwnProperty = obj.hasOwnProperty("property");
|
||||
|
||||
delete obj.property;
|
||||
|
||||
return obj.hasOwnProperty("property") && hadOwnProperty;
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
configurable: undefined
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotConfigurable(obj, "property");
|
||||
|
|
|
@ -9,23 +9,16 @@ es5id: 15.2.3.7-5-b-86
|
|||
description: >
|
||||
Object.defineProperties - value of 'configurable' property of
|
||||
'descObj' is null (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
configurable: null
|
||||
}
|
||||
});
|
||||
|
||||
var hadOwnProperty = obj.hasOwnProperty("property");
|
||||
|
||||
delete obj.property;
|
||||
|
||||
return obj.hasOwnProperty("property") && hadOwnProperty;
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
configurable: null
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotConfigurable(obj, "property");
|
||||
|
|
|
@ -9,22 +9,16 @@ es5id: 15.2.3.7-5-b-88
|
|||
description: >
|
||||
Object.defineProperties - value of 'configurable' property of
|
||||
'descObj' is false (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
configurable: false
|
||||
}
|
||||
});
|
||||
|
||||
var hadOwnProperty = obj.hasOwnProperty("property");
|
||||
|
||||
delete obj.property;
|
||||
|
||||
return obj.hasOwnProperty("property") && hadOwnProperty;
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
configurable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotConfigurable(obj, "property");
|
||||
|
|
|
@ -9,22 +9,16 @@ es5id: 15.2.3.7-5-b-89
|
|||
description: >
|
||||
Object.defineProperties - value of 'configurable' property of
|
||||
'descObj' is 0 (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
configurable: 0
|
||||
}
|
||||
});
|
||||
|
||||
var hadOwnProperty = obj.hasOwnProperty("property");
|
||||
|
||||
delete obj.property;
|
||||
|
||||
return obj.hasOwnProperty("property") && hadOwnProperty;
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
configurable: 0
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotConfigurable(obj, "property");
|
||||
|
|
|
@ -9,22 +9,16 @@ es5id: 15.2.3.7-5-b-90
|
|||
description: >
|
||||
Object.defineProperties - value of 'configurable' property of
|
||||
'descObj' is +0 (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
configurable: +0
|
||||
}
|
||||
});
|
||||
|
||||
var hadOwnProperty = obj.hasOwnProperty("property");
|
||||
|
||||
delete obj.property;
|
||||
|
||||
return obj.hasOwnProperty("property") && hadOwnProperty;
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
configurable: +0
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotConfigurable(obj, "property");
|
||||
|
|
|
@ -9,22 +9,16 @@ es5id: 15.2.3.7-5-b-91
|
|||
description: >
|
||||
Object.defineProperties - value of 'configurable' property of
|
||||
'descObj' is -0 (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
configurable: -0
|
||||
}
|
||||
});
|
||||
|
||||
var hadOwnProperty = obj.hasOwnProperty("property");
|
||||
|
||||
delete obj.property;
|
||||
|
||||
return obj.hasOwnProperty("property") && hadOwnProperty;
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
configurable: -0
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotConfigurable(obj, "property");
|
||||
|
|
|
@ -9,22 +9,16 @@ es5id: 15.2.3.7-5-b-92
|
|||
description: >
|
||||
Object.defineProperties - value of 'configurable' property of
|
||||
'descObj' is NaN (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
configurable: NaN
|
||||
}
|
||||
});
|
||||
|
||||
var hadOwnProperty = obj.hasOwnProperty("property");
|
||||
|
||||
delete obj.property;
|
||||
|
||||
return obj.hasOwnProperty("property") && hadOwnProperty;
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
configurable: NaN
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotConfigurable(obj, "property");
|
||||
|
|
|
@ -9,22 +9,16 @@ es5id: 15.2.3.7-5-b-95
|
|||
description: >
|
||||
Object.defineProperties - value of 'configurable' property of
|
||||
'descObj' is empty string (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
configurable: ""
|
||||
}
|
||||
});
|
||||
|
||||
var hadOwnProperty = obj.hasOwnProperty("property");
|
||||
|
||||
delete obj.property;
|
||||
|
||||
return obj.hasOwnProperty("property") && hadOwnProperty;
|
||||
Object.defineProperties(obj, {
|
||||
property: {
|
||||
configurable: ""
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(obj.hasOwnProperty("property"));
|
||||
verifyNotConfigurable(obj, "property");
|
||||
|
|
|
@ -11,38 +11,24 @@ description: >
|
|||
property of 'O', the [[Value]] field of 'desc' is absent, test
|
||||
every field in 'desc' is same with corresponding attribute value
|
||||
of the length property in 'O' (15.4.5.1 step 3.a.i)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
length: {
|
||||
writable: true,
|
||||
enumerable: false,
|
||||
configurable: false
|
||||
}
|
||||
});
|
||||
|
||||
var verifyValue = false;
|
||||
verifyValue = (arr.length === 0);
|
||||
|
||||
var verifyWritable = false;
|
||||
arr.length = 2;
|
||||
verifyWritable = (arr.length === 2);
|
||||
|
||||
var verifyEnumerable = false;
|
||||
for (var p in arr) {
|
||||
if (p === "length") {
|
||||
verifyEnumerable = true;
|
||||
}
|
||||
}
|
||||
|
||||
var verifyConfigurable = false;
|
||||
delete arr.length;
|
||||
verifyConfigurable = arr.hasOwnProperty("length");
|
||||
|
||||
return verifyValue && verifyWritable && !verifyEnumerable && verifyConfigurable;
|
||||
Object.defineProperties(arr, {
|
||||
length: {
|
||||
writable: true,
|
||||
enumerable: false,
|
||||
configurable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert.sameValue(arr.length, 0);
|
||||
|
||||
arr.length = 2;
|
||||
assert.sameValue(arr.length, 2);
|
||||
|
||||
verifyNotEnumerable(arr, "length");
|
||||
|
||||
verifyNotConfigurable(arr, "length");
|
||||
|
|
|
@ -13,21 +13,22 @@ description: >
|
|||
length property is set to false at last after deleting properties
|
||||
with large index named if the [[Writable]] field of 'desc' is
|
||||
false (15.4.5.1 step 3.i.ii)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [0, 1];
|
||||
var arr = [0, 1];
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
length: {
|
||||
value: 1,
|
||||
writable: false
|
||||
}
|
||||
});
|
||||
|
||||
arr.length = 10; //try to overwrite length value of arr
|
||||
return !arr.hasOwnProperty("1") && arr.length === 1 && arr[0] === 0;
|
||||
Object.defineProperties(arr, {
|
||||
length: {
|
||||
value: 1,
|
||||
writable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
//try to overwrite length value of arr
|
||||
verifyNotWritable(arr, "length")
|
||||
|
||||
assert(!arr.hasOwnProperty("1"));
|
||||
assert.sameValue(arr.length, 1);
|
||||
assert.sameValue(arr[0], 0);
|
||||
|
|
|
@ -12,31 +12,29 @@ description: >
|
|||
of the length property, test the [[Writable]] attribute of the
|
||||
length property in 'O' is set as true before deleting properties
|
||||
with large index named (15.4.5.1 step 3.i.iii)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [0, 1, 2];
|
||||
var result = 0;
|
||||
var arr = [0, 1, 2];
|
||||
var result = 0;
|
||||
|
||||
try {
|
||||
Object.defineProperty(arr, "1", {
|
||||
configurable: false
|
||||
});
|
||||
try {
|
||||
Object.defineProperty(arr, "1", {
|
||||
configurable: false
|
||||
});
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
length: {
|
||||
value: 0,
|
||||
writable: false
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
} catch (e) {
|
||||
result = (arr.length === 2);
|
||||
arr.length = 10;
|
||||
return (e instanceof TypeError) && result && arr.length === 2;
|
||||
Object.defineProperties(arr, {
|
||||
length: {
|
||||
value: 0,
|
||||
writable: false
|
||||
}
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
$ERROR("expected to throw TypeError")
|
||||
} catch (e) {
|
||||
assert(e instanceof TypeError);
|
||||
assert.sameValue(arr.length, 2);
|
||||
verifyNotWritable(arr, "length");
|
||||
}
|
||||
|
||||
|
|
|
@ -13,29 +13,31 @@ description: >
|
|||
length property is set to false at last when the [[Writable]]
|
||||
field of 'desc' is false and 'O' contains non-configurable large
|
||||
index named property (15.4.5.1 step 3.l.iii.2)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [0, 1];
|
||||
var arr = [0, 1];
|
||||
|
||||
try {
|
||||
Object.defineProperty(arr, "1", {
|
||||
configurable: false
|
||||
});
|
||||
try {
|
||||
Object.defineProperty(arr, "1", {
|
||||
configurable: false
|
||||
});
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
length: {
|
||||
value: 1,
|
||||
writable: false
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (e) {
|
||||
arr.length = 10; //try to overwrite length value of arr
|
||||
return e instanceof TypeError && arr.hasOwnProperty("1") &&
|
||||
arr.length === 2 && arr[0] === 0 && arr[1] === 1;
|
||||
Object.defineProperties(arr, {
|
||||
length: {
|
||||
value: 1,
|
||||
writable: false
|
||||
}
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
$ERROR("Expected to throw TypeError");
|
||||
} catch (e) {
|
||||
assert(e instanceof TypeError);
|
||||
assert(arr.hasOwnProperty("1"));
|
||||
verifyNotWritable(arr, "length");
|
||||
assert.sameValue(arr[0], 0);
|
||||
assert.sameValue(arr[1], 1);
|
||||
assert.sameValue(arr.length, 2)
|
||||
}
|
||||
|
||||
|
|
|
@ -13,25 +13,20 @@ description: >
|
|||
length property is set to false at last when the [[Writable]]
|
||||
field of 'desc' is false and 'O' doesn't contain non-configurable
|
||||
large index named property (15.4.5.1 step 3.m)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [0, 1];
|
||||
var arr = [0, 1];
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
length: {
|
||||
value: 0,
|
||||
writable: false
|
||||
}
|
||||
});
|
||||
|
||||
arr.length = 10; //try to overwrite length value of arr
|
||||
return !arr.hasOwnProperty("1") && arr.length === 0 && !arr.hasOwnProperty("0");
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
length: {
|
||||
value: 0,
|
||||
writable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(!arr.hasOwnProperty("1"));
|
||||
assert.sameValue(arr.length, 0);
|
||||
assert(!arr.hasOwnProperty("0"));
|
||||
verifyNotWritable(arr, "length");
|
||||
|
|
|
@ -12,28 +12,21 @@ description: >
|
|||
[[Writable]] of 'P' property in 'Attributes' is set as false value
|
||||
if [[Writable]] is absent in data descriptor 'desc' (15.4.5.1
|
||||
step 4.c)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var isOwnProperty = false;
|
||||
var canWritable = false;
|
||||
var arr = [];
|
||||
var isOwnProperty = false;
|
||||
var canWritable = false;
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: 1001,
|
||||
enumerable: true,
|
||||
configurable: false
|
||||
}
|
||||
});
|
||||
|
||||
isOwnProperty = arr.hasOwnProperty("0");
|
||||
|
||||
arr[0] = 12;
|
||||
|
||||
canWritable = (arr[0] === 12);
|
||||
|
||||
return isOwnProperty && !canWritable && arr[0] === 1001;
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: 1001,
|
||||
enumerable: true,
|
||||
configurable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(arr.hasOwnProperty("0"));
|
||||
verifyNotWritable(arr, "0");
|
||||
assert.sameValue(arr[0], 1001);
|
||||
|
|
|
@ -12,25 +12,21 @@ description: >
|
|||
[[Configurable]] of 'P' property in 'Attributes' is set as false
|
||||
value if [[Configurable]] is absent in data descriptor 'desc'
|
||||
(15.4.5.1 step 4.c)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var beforeDeleted = false;
|
||||
var afterDeleted = false;
|
||||
var arr = [];
|
||||
var beforeDeleted = false;
|
||||
var afterDeleted = false;
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: 1001,
|
||||
writable: true,
|
||||
enumerable: true
|
||||
}
|
||||
});
|
||||
|
||||
beforeDeleted = arr.hasOwnProperty("0");
|
||||
delete arr[0];
|
||||
afterDeleted = arr.hasOwnProperty("0");
|
||||
return beforeDeleted && afterDeleted && arr[0] === 1001;
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: 1001,
|
||||
writable: true,
|
||||
enumerable: true
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
assert(arr.hasOwnProperty("0"));
|
||||
verifyNotConfigurable(arr, "0");
|
||||
assert(arr.hasOwnProperty("0"));
|
||||
|
|
|
@ -9,10 +9,9 @@ es5id: 15.2.3.7-6-a-44
|
|||
description: >
|
||||
Object.defineProperties - both desc.value and P.value are NaN
|
||||
(8.12.9 step 6)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
|
||||
|
@ -42,4 +41,3 @@ function testcase() {
|
|||
|
||||
return verifyConfigurable && !verifyEnumerable && verifyValue;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
|
|
|
@ -9,42 +9,28 @@ es5id: 15.2.3.7-6-a-57
|
|||
description: >
|
||||
Object.defineProperties - both desc.[[Get]] and P.[[Get]] are two
|
||||
objects which refer to the same object (8.12.9 step 6)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
function get_Func() {
|
||||
return 10;
|
||||
}
|
||||
function get_Func() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: get_Func
|
||||
});
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: get_Func
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
get: get_Func
|
||||
}
|
||||
});
|
||||
|
||||
var verifyEnumerable = false;
|
||||
for (var p in obj) {
|
||||
if (p === "foo") {
|
||||
verifyEnumerable = true;
|
||||
}
|
||||
}
|
||||
|
||||
var verifyValue = false;
|
||||
verifyValue = (obj.foo === 10);
|
||||
|
||||
var verifyConfigurable = false;
|
||||
delete obj.foo;
|
||||
verifyConfigurable = obj.hasOwnProperty("foo");
|
||||
|
||||
var desc = Object.getOwnPropertyDescriptor(obj, "foo");
|
||||
return verifyConfigurable && !verifyEnumerable && verifyValue && typeof (desc.set) === "undefined" && desc.get === get_Func;
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
get: get_Func
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
verifyNotEnumerable(obj, "foo");
|
||||
assert.sameValue(obj.foo, 10);
|
||||
|
||||
verifyNotConfigurable(obj, "foo")
|
||||
|
||||
|
|
|
@ -10,48 +10,39 @@ description: >
|
|||
Object.defineProperties throws TypeError when P is accessor
|
||||
property and P.configurable is false, desc is data property
|
||||
(8.12.9 step 9.a)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
|
||||
var obj = {};
|
||||
function get_Func() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
function get_Func() {
|
||||
return 10;
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: get_Func,
|
||||
configurable: false
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
value: 11
|
||||
}
|
||||
});
|
||||
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: get_Func,
|
||||
configurable: false
|
||||
});
|
||||
$ERROR("Expected TypeError");
|
||||
} catch (e) {
|
||||
assert(e instanceof TypeError);
|
||||
verifyNotEnumerable(obj, "foo");
|
||||
|
||||
try {
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
value: 11
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (e) {
|
||||
var verifyEnumerable = false;
|
||||
for (var p in obj) {
|
||||
if (p === "foo") {
|
||||
verifyEnumerable = true;
|
||||
}
|
||||
}
|
||||
assert.sameValue(obj.foo, 10);
|
||||
|
||||
var verifyValue = false;
|
||||
verifyValue = (obj.foo === 10);
|
||||
verifyNotConfigurable(obj, "foo");
|
||||
|
||||
var desc = Object.getOwnPropertyDescriptor(obj, "foo");
|
||||
var desc = Object.getOwnPropertyDescriptor(obj, "foo");
|
||||
|
||||
var verifyConfigurable = false;
|
||||
delete obj.foo;
|
||||
verifyConfigurable = obj.hasOwnProperty("foo");
|
||||
assert.sameValue(typeof (desc.set), "undefined");
|
||||
assert.sameValue(desc.get, get_Func);
|
||||
}
|
||||
|
||||
return e instanceof TypeError && verifyConfigurable && !verifyEnumerable &&
|
||||
verifyValue && typeof (desc.set) === "undefined" && desc.get === get_Func;
|
||||
}
|
||||
}
|
||||
runTestCase(testcase);
|
||||
|
|
|
@ -10,43 +10,26 @@ description: >
|
|||
Object.defineProperties will not throw TypeError if P.configurable
|
||||
is false, P.writalbe is false, P.value is NaN and properties.value
|
||||
is NaN (8.12.9 step 10.a.ii.1)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var accessed = false;
|
||||
var obj = {};
|
||||
var accessed = false;
|
||||
|
||||
Object.defineProperty(obj, "foo", {
|
||||
value: NaN,
|
||||
writable: false,
|
||||
configurable: false
|
||||
});
|
||||
Object.defineProperty(obj, "foo", {
|
||||
value: NaN,
|
||||
writable: false,
|
||||
configurable: false
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
value: NaN
|
||||
}
|
||||
});
|
||||
|
||||
var verifyEnumerable = false;
|
||||
for (var p in obj) {
|
||||
if (p === "foo") {
|
||||
verifyEnumerable = true;
|
||||
}
|
||||
}
|
||||
|
||||
obj.prop = "overrideData";
|
||||
var verifyValue = false;
|
||||
verifyValue = obj.foo !== obj.foo && isNaN(obj.foo);
|
||||
|
||||
var desc = Object.getOwnPropertyDescriptor(obj, "foo");
|
||||
|
||||
var verifyConfigurable = false;
|
||||
delete obj.foo;
|
||||
verifyConfigurable = obj.hasOwnProperty("foo");
|
||||
|
||||
return verifyValue && !verifyEnumerable && verifyConfigurable;
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
value: NaN
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
verifyNotEnumerable(obj, "foo");
|
||||
verifyNotWritable(obj, "foo");
|
||||
verifyNotConfigurable(obj, "foo");
|
||||
|
||||
|
|
|
@ -9,10 +9,9 @@ es5id: 15.2.3.6-3-100
|
|||
description: >
|
||||
Object.defineProperty - 'configurable' property in 'Attributes' is
|
||||
null (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = { };
|
||||
|
||||
Object.defineProperty(obj, "property", { configurable: null });
|
||||
|
@ -25,4 +24,3 @@ function testcase() {
|
|||
|
||||
return beforeDeleted === true && afterDeleted === true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
|
|
|
@ -9,10 +9,9 @@ es5id: 15.2.3.6-3-102
|
|||
description: >
|
||||
Object.defineProperty - 'configurable' property in 'Attributes' is
|
||||
false (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = { };
|
||||
|
||||
Object.defineProperty(obj, "property", { configurable: false });
|
||||
|
@ -25,4 +24,3 @@ function testcase() {
|
|||
|
||||
return beforeDeleted === true && afterDeleted === true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
|
|
|
@ -9,10 +9,9 @@ es5id: 15.2.3.6-3-103
|
|||
description: >
|
||||
Object.defineProperty - 'configurable' property in 'Attributes' is
|
||||
0 (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = { };
|
||||
|
||||
Object.defineProperty(obj, "property", { configurable: 0 });
|
||||
|
@ -25,4 +24,3 @@ function testcase() {
|
|||
|
||||
return beforeDeleted === true && afterDeleted === true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
|
|
|
@ -9,10 +9,9 @@ es5id: 15.2.3.6-3-104
|
|||
description: >
|
||||
Object.defineProperty - 'configurable' property in 'Attributes' is
|
||||
+0 (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperty(obj, "property", { configurable: +0 });
|
||||
|
@ -25,4 +24,3 @@ function testcase() {
|
|||
|
||||
return beforeDeleted === true && afterDeleted === true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
|
|
|
@ -9,10 +9,9 @@ es5id: 15.2.3.6-3-105
|
|||
description: >
|
||||
Object.defineProperty - 'configurable' property in 'Attributes' is
|
||||
-0 (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = { };
|
||||
|
||||
Object.defineProperty(obj, "property", { configurable: -0 });
|
||||
|
@ -25,4 +24,3 @@ function testcase() {
|
|||
|
||||
return beforeDeleted === true && afterDeleted === true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
|
|
|
@ -9,10 +9,9 @@ es5id: 15.2.3.6-3-106
|
|||
description: >
|
||||
Object.defineProperty - 'configurable' property in 'Attributes' is
|
||||
NaN (8.10.5 step 4.b)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var obj = { };
|
||||
|
||||
Object.defineProperty(obj, "property", { configurable: NaN });
|
||||
|
@ -25,4 +24,3 @@ function testcase() {
|
|||
|
||||
return beforeDeleted === true && afterDeleted === true;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue