rewrite tests to work in strict mode, use helpers

This commit is contained in:
smikes 2015-05-01 12:00:03 -06:00
parent fc10b8c607
commit 9824be6825
171 changed files with 1210 additions and 1867 deletions

View File

@ -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");

View File

@ -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");

View File

@ -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);

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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;
}

View File

@ -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");

View File

@ -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);

View File

@ -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);

View File

@ -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");

View File

@ -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);

View File

@ -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);

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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"));

View File

@ -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")

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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);

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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");

View File

@ -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);

View File

@ -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");
}

View File

@ -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)
}

View File

@ -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");

View File

@ -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);

View File

@ -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"));

View File

@ -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);

View File

@ -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")

View File

@ -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);

View File

@ -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");

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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