update, fix merge conflict

This commit is contained in:
smikes 2015-05-02 20:20:47 -06:00
parent 9b5a1c1e79
commit d513714fda
80 changed files with 1007 additions and 1210 deletions

View File

@ -12,19 +12,14 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperties(obj, { Object.defineProperties(obj, {
property: { property: {
writable: "" writable: ""
} }
}); });
obj.property = "isWritable";
return obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
}
assert(obj.hasOwnProperty("property")); assert(obj.hasOwnProperty("property"));
verifyNotWritable(obj, "property"); verifyNotWritable(obj, "property");
assert(obj.hasOwnProperty("property"));

View File

@ -14,30 +14,28 @@ includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var proto = {}; var proto = {};
Object.defineProperty(proto, "configurable", { Object.defineProperty(proto, "configurable", {
get: function () { get: function () {
return true; return true;
} }
}); });
var Con = function () { }; var Con = function () { };
Con.prototype = proto; Con.prototype = proto;
var descObj = new Con(); var descObj = new Con();
Object.defineProperty(descObj, "configurable", { Object.defineProperty(descObj, "configurable", {
get: function () { get: function () {
return false; return false;
} }
}); });
Object.defineProperties(obj, { Object.defineProperties(obj, {
prop: descObj prop: descObj
}); });
var result1 = obj.hasOwnProperty("prop");
delete obj.prop;
var result2 = obj.hasOwnProperty("prop");
return result1 === true && result2 === true; assert(obj.hasOwnProperty("prop"));
} verifyNotConfigurable(obj, "prop");
assert(obj.hasOwnProperty("prop"));

View File

@ -13,31 +13,18 @@ includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var desc = { value: NaN }; var desc = { value: NaN };
Object.defineProperty(obj, "foo", desc); Object.defineProperty(obj, "foo", desc);
Object.defineProperties(obj, { Object.defineProperties(obj, {
foo: { foo: {
value: NaN value: NaN
} }
}); });
var verifyEnumerable = false; verifyNotEnumerable(obj, "foo");
for (var p in obj) { verifyNotWritable(obj, "foo");
if (p === "foo") { verifyNotConfigurable(obj, "foo");
verifyEnumerable = true;
}
}
var verifyValue = false;
obj.prop = "overrideData";
verifyValue = obj.foo !== obj.foo && isNaN(obj.foo);
var verifyConfigurable = false;
delete obj.foo;
verifyConfigurable = obj.hasOwnProperty("foo");
return verifyConfigurable && !verifyEnumerable && verifyValue;
}

View File

@ -12,15 +12,9 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = { }; var obj = { };
Object.defineProperty(obj, "property", { configurable: null }); Object.defineProperty(obj, "property", { configurable: null });
var beforeDeleted = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotConfigurable(obj, "property");
delete obj.property;
var afterDeleted = obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
return beforeDeleted === true && afterDeleted === true;
}

View File

@ -12,15 +12,9 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = { }; var obj = { };
Object.defineProperty(obj, "property", { configurable: false }); Object.defineProperty(obj, "property", { configurable: false });
var beforeDeleted = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotConfigurable(obj, "property");
delete obj.property;
var afterDeleted = obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
return beforeDeleted === true && afterDeleted === true;
}

View File

@ -12,15 +12,9 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = { }; var obj = { };
Object.defineProperty(obj, "property", { configurable: 0 }); Object.defineProperty(obj, "property", { configurable: 0 });
var beforeDeleted = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotConfigurable(obj, "property");
delete obj.property;
var afterDeleted = obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
return beforeDeleted === true && afterDeleted === true;
}

View File

@ -12,15 +12,9 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "property", { configurable: +0 }); Object.defineProperty(obj, "property", { configurable: +0 });
var beforeDeleted = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotConfigurable(obj, "property");
delete obj.property;
var afterDeleted = obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
return beforeDeleted === true && afterDeleted === true;
}

View File

@ -12,15 +12,9 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = { }; var obj = { };
Object.defineProperty(obj, "property", { configurable: -0 }); Object.defineProperty(obj, "property", { configurable: -0 });
var beforeDeleted = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotConfigurable(obj, "property");
delete obj.property;
var afterDeleted = obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
return beforeDeleted === true && afterDeleted === true;
}

View File

@ -12,15 +12,9 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = { }; var obj = { };
Object.defineProperty(obj, "property", { configurable: NaN }); Object.defineProperty(obj, "property", { configurable: NaN });
var beforeDeleted = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotConfigurable(obj, "property");
delete obj.property;
var afterDeleted = obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
return beforeDeleted === true && afterDeleted === true;
}

View File

@ -12,15 +12,9 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = { }; var obj = { };
Object.defineProperty(obj, "property", { configurable: "" }); Object.defineProperty(obj, "property", { configurable: "" });
var beforeDeleted = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotConfigurable(obj, "property");
delete obj.property;
var afterDeleted = obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
return beforeDeleted === true && afterDeleted === true;
}

View File

@ -12,19 +12,15 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var attr = { var attr = {
writable: false writable: false
}; };
Object.defineProperty(obj, "property", attr); Object.defineProperty(obj, "property", attr);
var beforeWrite = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotWritable(obj, "property");
verifyNotConfigurable(obj, "property");
obj.property = "isWritable";
var afterWrite = (obj.property === "isWritable");
return beforeWrite === true && afterWrite === false;
}

View File

@ -12,19 +12,13 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var attr = { var attr = {
value: 100 value: 100
}; };
Object.defineProperty(obj, "property", attr); Object.defineProperty(obj, "property", attr);
var beforeWrite = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotWritable(obj, "property");
obj.property = "isWritable";
var afterWrite = (obj.property === "isWritable");
return beforeWrite === true && afterWrite === false;
}

View File

@ -12,20 +12,15 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var attr = {}; var attr = {};
Object.defineProperty(attr, "writable", { Object.defineProperty(attr, "writable", {
set: function () { } set: function () { }
}); });
Object.defineProperty(obj, "property", attr); Object.defineProperty(obj, "property", attr);
var beforeWrite = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotWritable(obj, "property");
obj.property = "isWritable";
var afterWrite = (typeof (obj.property) === "undefined");
return beforeWrite === true && afterWrite === true;
}

View File

@ -13,30 +13,24 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var proto = {}; var proto = {};
Object.defineProperty(proto, "writable", { Object.defineProperty(proto, "writable", {
get: function () { get: function () {
return true; return true;
} }
}); });
var ConstructFun = function () { }; var ConstructFun = function () { };
ConstructFun.prototype = proto; ConstructFun.prototype = proto;
var child = new ConstructFun(); var child = new ConstructFun();
Object.defineProperty(child, "writable", { Object.defineProperty(child, "writable", {
set: function () { } set: function () { }
}); });
Object.defineProperty(obj, "property", child); Object.defineProperty(obj, "property", child);
var beforeWrite = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotWritable(obj, "property");
obj.property = "isWritable";
var afterWrite = (typeof (obj.property) === "undefined");
return beforeWrite === true && afterWrite === true;
}

View File

@ -13,25 +13,19 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var proto = {}; var proto = {};
Object.defineProperty(proto, "writable", { Object.defineProperty(proto, "writable", {
set: function () { } set: function () { }
}); });
var ConstructFun = function () { }; var ConstructFun = function () { };
ConstructFun.prototype = proto; ConstructFun.prototype = proto;
var child = new ConstructFun(); var child = new ConstructFun();
Object.defineProperty(obj, "property", child); Object.defineProperty(obj, "property", child);
var beforeWrite = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotWritable(obj, "property");
obj.property = "isWritable";
var afterWrite = (typeof (obj.property) === "undefined");
return beforeWrite === true && afterWrite === true;
}

View File

@ -13,22 +13,15 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
try { try {
Date.prototype.writable = true; Date.prototype.writable = true;
dateObj = new Date(); var dateObj = new Date();
Object.defineProperty(obj, "property", dateObj); Object.defineProperty(obj, "property", dateObj);
verifyWritable(obj, "property");
var beforeWrite = obj.hasOwnProperty("property"); } finally {
obj.property = "isWritable";
var afterWrite = (obj.property === "isWritable");
return beforeWrite === true && afterWrite === true;
} finally {
delete Date.prototype.writable; delete Date.prototype.writable;
} }
}

View File

@ -12,17 +12,11 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "property", { Object.defineProperty(obj, "property", {
writable: undefined writable: undefined
}); });
var beforeWrite = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotWritable(obj, "property");
obj.property = "isWritable";
var afterWrite = (typeof (obj.property) === "undefined");
return beforeWrite === true && afterWrite === true;
}

View File

@ -12,15 +12,9 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = { }; var obj = { };
Object.defineProperty(obj, "property", { writable: null }); Object.defineProperty(obj, "property", { writable: null });
var beforeWrite = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotWritable(obj, "property");
obj.property = "isWritable";
var afterWrite = (typeof (obj.property) === "undefined");
return beforeWrite === true && afterWrite === true;
}

View File

@ -12,15 +12,9 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = { }; var obj = { };
Object.defineProperty(obj, "property", { writable: false }); Object.defineProperty(obj, "property", { writable: false });
var beforeWrite = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotWritable(obj, "property");
obj.property = "isWritable";
var afterWrite = (typeof (obj.property) === "undefined");
return beforeWrite === true && afterWrite === true;
}

View File

@ -12,15 +12,9 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = { }; var obj = { };
Object.defineProperty(obj, "property", { writable: 0 }); Object.defineProperty(obj, "property", { writable: 0 });
var beforeWrite = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotWritable(obj, "property");
obj.property = "isWritable";
var afterWrite = (typeof (obj.property) === "undefined");
return beforeWrite === true && afterWrite === true;
}

View File

@ -12,15 +12,9 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "property", { writable: +0 }); Object.defineProperty(obj, "property", { writable: +0 });
var beforeWrite = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotWritable(obj, "property");
obj.property = "isWritable";
var afterWrite = (typeof (obj.property) === "undefined");
return beforeWrite === true && afterWrite === true;
}

View File

@ -12,15 +12,9 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = { }; var obj = { };
Object.defineProperty(obj, "property", { writable: -0 }); Object.defineProperty(obj, "property", { writable: -0 });
var beforeWrite = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotWritable(obj, "property");
obj.property = "isWritable";
var afterWrite = (typeof (obj.property) === "undefined");
return beforeWrite === true && afterWrite === true;
}

View File

@ -12,15 +12,13 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = { }; var obj = { };
Object.defineProperty(obj, "property", { writable: NaN}); Object.defineProperty(obj, "property", { writable: NaN});
var beforeWrite = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
obj.property = "isWritable"; verifyNotWritable(obj, "property");
var afterWrite = (typeof (obj.property) === "undefined"); assert.sameValue(typeof (obj.property), "undefined");
return beforeWrite === true && afterWrite === true;
}

View File

@ -12,15 +12,9 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "property", { writable: "" }); Object.defineProperty(obj, "property", { writable: "" });
var beforeWrite = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotWritable(obj, "property");
obj.property = "isWritable";
var afterWrite = (typeof (obj.property) === "undefined");
return beforeWrite === true && afterWrite === true;
}

View File

@ -12,15 +12,13 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "property", { Object.defineProperty(obj, "property", {
get: function () { get: function () {
return 11; return 11;
} }
}); });
obj.property = 14; assert(obj.hasOwnProperty("property"));
var desc = Object.getOwnPropertyDescriptor(obj, "property"); verifyNotWritable(obj, "property");
return obj.hasOwnProperty("property") && obj.property === 11 && typeof desc.set === "undefined";
}

View File

@ -12,18 +12,20 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var attributes = {}; var attributes = {};
Object.defineProperty(attributes, "set", { Object.defineProperty(attributes, "set", {
set: function () { } set: function () { }
}); });
Object.defineProperty(obj, "property", attributes); Object.defineProperty(obj, "property", attributes);
obj.property = "overrideOwnData"; verifyNotWritable(obj, "property");
var desc = Object.getOwnPropertyDescriptor(obj, "property");
assert(obj.hasOwnProperty("property"));
assert.sameValue(typeof obj.property, "undefined");
assert.sameValue(typeof desc.set, "undefined");
var desc = Object.getOwnPropertyDescriptor(obj, "property");
return obj.hasOwnProperty("property") && typeof obj.property === "undefined" &&
typeof desc.set === "undefined";
}

View File

@ -13,27 +13,30 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var proto = {}; var proto = {};
var data = "data"; var data = "data";
Object.defineProperty(proto, "set", { Object.defineProperty(proto, "set", {
get: function () { get: function () {
return function (value) { return function (value) {
data = value; data = value;
}; };
} }
}); });
var ConstructFun = function () { }; var ConstructFun = function () { };
ConstructFun.prototype = proto; ConstructFun.prototype = proto;
var child = new ConstructFun(); var child = new ConstructFun();
Object.defineProperty(child, "set", { Object.defineProperty(child, "set", {
set: function () { } set: function () { }
}); });
Object.defineProperty(obj, "property", child); Object.defineProperty(obj, "property", child);
obj.property = "overrideData"; verifyNotWritable(obj, "property");
return obj.hasOwnProperty("property") && typeof obj.property === "undefined" && data === "data";
} assert.sameValue(typeof obj.property, "undefined");
assert.sameValue(data, "data");
assert(obj.hasOwnProperty("property"));

View File

@ -13,19 +13,18 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var proto = {}; var proto = {};
Object.defineProperty(proto, "set", { Object.defineProperty(proto, "set", {
set: function () { } set: function () { }
}); });
var ConstructFun = function () { }; var ConstructFun = function () { };
ConstructFun.prototype = proto; ConstructFun.prototype = proto;
var child = new ConstructFun(); var child = new ConstructFun();
Object.defineProperty(obj, "property", child); Object.defineProperty(obj, "property", child);
obj.property = "overrideData"; assert(obj.hasOwnProperty("property"));
return obj.hasOwnProperty("property") && typeof obj.property === "undefined"; verifyNotWritable(obj, "property");
}

View File

@ -12,14 +12,13 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "property", { Object.defineProperty(obj, "property", {
set: undefined set: undefined
}); });
obj.property = "overrideData"; var desc = Object.getOwnPropertyDescriptor(obj, "property");
var desc = Object.getOwnPropertyDescriptor(obj, "property");
return obj.hasOwnProperty("property") && typeof obj.property === "undefined" && assert(obj.hasOwnProperty("property"));
typeof desc.set === "undefined"; verifyNotWritable(obj, "property");
}

View File

@ -12,17 +12,11 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "property", { Object.defineProperty(obj, "property", {
configurable: false configurable: false
}); });
var beforeDeleted = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotConfigurable(obj, "property");
delete obj.property;
var afterDeleted = obj.hasOwnProperty("property");
return beforeDeleted === true && afterDeleted === true;
}

View File

@ -12,16 +12,9 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = { }; var obj = { };
Object.defineProperty(obj, "property", { value: 100 }); Object.defineProperty(obj, "property", { value: 100 });
var beforeDeleted = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotConfigurable(obj, "property");
delete obj.property;
var afterDeleted = (obj.property === 100);
return beforeDeleted === true && afterDeleted === true;
}

View File

@ -12,23 +12,23 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = { }; var obj = { };
var proto = { var proto = {
configurable: false configurable: false
}; };
var ConstructFun = function () { }; var ConstructFun = function () { };
ConstructFun.prototype = proto; ConstructFun.prototype = proto;
var child = new ConstructFun(); var child = new ConstructFun();
Object.defineProperty(obj, "property", child); Object.defineProperty(obj, "property", child);
var beforeDeleted = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
delete obj.property; verifyNotConfigurable(obj, "property");
var afterDeleted = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
return beforeDeleted && afterDeleted && typeof (obj.property) === "undefined";
} assert.sameValue(typeof (obj.property), "undefined");

View File

@ -12,20 +12,14 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = { }; var obj = { };
var attr = {}; var attr = {};
Object.defineProperty(attr, "configurable", { Object.defineProperty(attr, "configurable", {
set : function () { } set : function () { }
}); });
Object.defineProperty(obj, "property", attr); Object.defineProperty(obj, "property", attr);
var beforeDeleted = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotConfigurable(obj, "property");
delete obj.property;
var afterDeleted = obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
return beforeDeleted === true && afterDeleted === true;
}

View File

@ -13,30 +13,24 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var proto = {}; var proto = {};
Object.defineProperty(proto, "configurable", { Object.defineProperty(proto, "configurable", {
get: function () { get: function () {
return true; return true;
} }
}); });
var ConstructFun = function () { }; var ConstructFun = function () { };
ConstructFun.prototype = proto; ConstructFun.prototype = proto;
var child = new ConstructFun(); var child = new ConstructFun();
Object.defineProperty(child, "configurable", { Object.defineProperty(child, "configurable", {
set: function () { } set: function () { }
}); });
Object.defineProperty(obj, "property", child); Object.defineProperty(obj, "property", child);
var beforeDeleted = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotConfigurable(obj, "property");
delete obj.property;
var afterDeleted = obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
return beforeDeleted === true && afterDeleted === true;
}

View File

@ -13,25 +13,25 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var proto = {}; var proto = {};
Object.defineProperty(proto, "configurable", { Object.defineProperty(proto, "configurable", {
set: function () { } set: function () { }
}); });
var ConstructFun = function () { }; var ConstructFun = function () { };
ConstructFun.prototype = proto; ConstructFun.prototype = proto;
var child = new ConstructFun(); var child = new ConstructFun();
Object.defineProperty(obj, "property", child); Object.defineProperty(obj, "property", child);
var beforeDeleted = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
delete obj.property; verifyNotConfigurable(obj, "property");
assert(obj.hasOwnProperty("property"));
assert.sameValue(typeof (obj.property), "undefined");
var afterDeleted = obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
return beforeDeleted === true && afterDeleted === true;
}

View File

@ -12,15 +12,9 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = { }; var obj = { };
Object.defineProperty(obj, "property", { configurable: undefined }); Object.defineProperty(obj, "property", { configurable: undefined });
var beforeDeleted = obj.hasOwnProperty("property"); assert(obj.hasOwnProperty("property"));
verifyNotConfigurable(obj, "property");
delete obj.property;
var afterDeleted = obj.hasOwnProperty("property") && typeof (obj.property) === "undefined";
return beforeDeleted === true && afterDeleted === true;
}

View File

@ -13,27 +13,12 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var arrObj = []; var arrObj = [];
Object.defineProperty(arrObj, "length", {}); Object.defineProperty(arrObj, "length", {});
var verifyValue = false; assert.sameValue(arrObj.length, 0);
if (arrObj.length === 0) { arrObj.length = 2;
verifyValue = true; assert.sameValue(arrObj.length, 2);
} verifyNotEnumerable(arrObj, "length");
verifyNotConfigurable(arrObj, "length");
arrObj.length = 2;
var verifyWritable = arrObj.length === 2;
var verifyEnumerable = false;
for (var p in arrObj) {
if (p === "length" && arrObj.hasOwnProperty(p)) {
verifyEnumerable = true;
}
}
delete arrObj.length;
var verifyConfigurable = arrObj.hasOwnProperty("length");
return verifyValue && verifyWritable && !verifyEnumerable && verifyConfigurable;
}

View File

@ -15,30 +15,15 @@ includes: [propertyHelper.js]
---*/ ---*/
var arrObj = []; var arrObj = [];
Object.defineProperty(arrObj, "length", { Object.defineProperty(arrObj, "length", {
writable: true, writable: true,
enumerable: false, enumerable: false,
configurable: false configurable: false
}); });
var verifyValue = false; assert.sameValue(arrObj.length, 0);
if (arrObj.length === 0) { arrObj.length = 2;
verifyValue = true; assert.sameValue(arrObj.length, 2);
} verifyNotEnumerable(arrObj, "length");
verifyNotConfigurable(arrObj, "length");
arrObj.length = 2;
var verifyWritable = arrObj.length === 2 ? true : false;
var verifyEnumerable = false;
for (var p in arrObj) {
if (p === "length" && arrObj.hasOwnProperty(p)) {
verifyEnumerable = true;
}
}
delete arrObj.length;
var verifyConfigurable = arrObj.hasOwnProperty("length");
return verifyValue && verifyWritable && !verifyEnumerable && verifyConfigurable;
}

View File

@ -17,16 +17,13 @@ includes: [propertyHelper.js]
---*/ ---*/
var arrObj = [0, 1]; var arrObj = [0, 1];
Object.defineProperty(arrObj, "length", { Object.defineProperty(arrObj, "length", {
value: 1, value: 1,
writable: false writable: false
}); });
var indexDeleted = !arrObj.hasOwnProperty("1"); assert(!arrObj.hasOwnProperty("1"))
assert.sameValue(arrObj.length, 1);
arrObj.length = 10; verifyNotWritable(arrObj, "length");
return indexDeleted && arrObj.length === 1;
}

View File

@ -17,13 +17,14 @@ includes: [propertyHelper.js]
---*/ ---*/
var arrObj = [0, 1]; var arrObj = [0, 1];
Object.defineProperty(arrObj, "length", { Object.defineProperty(arrObj, "length", {
value: 0, value: 0,
writable: false writable: false
}); });
arrObj.length = 10; //try to overwrite length value of arr verifyNotWritable(arrObj, "length");
return !arrObj.hasOwnProperty("1") && arrObj.length === 0;
} assert(!arrObj.hasOwnProperty("1"));
assert.sameValue(arrObj.length, 0);

View File

@ -13,29 +13,15 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var arrObj = []; var arrObj = [];
Object.defineProperty(arrObj, "0", { value: NaN }); Object.defineProperty(arrObj, "0", { value: NaN });
Object.defineProperty(arrObj, "0", { value: NaN }); Object.defineProperty(arrObj, "0", { value: NaN });
var hasProperty = arrObj.hasOwnProperty("0"); assert(arrObj.hasOwnProperty("0"));
var verifyValue = (arrObj[0] !== arrObj[0]); assert(arrObj[0] !== arrObj[0]);
var verifyWritable = false; verifyNotWritable(arrObj, "0");
arrObj[0] = 1001; verifyNotEnumerable(arrObj, "0");
verifyWritable = arrObj[0] !== 1001 && arrObj[0] !== arrObj[0]; verifyNotWritable(arrObj, "0");
var verifyEnumerable = false;
for (var p in arrObj) {
if (p === "0") {
verifyEnumerable = true;
}
}
var verifyConfigurable = false;
delete arrObj[0];
verifyConfigurable = arrObj.hasOwnProperty("0");
return hasProperty && verifyValue && verifyWritable && !verifyEnumerable && verifyConfigurable;
}

View File

@ -16,33 +16,22 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var arrObj = []; var arrObj = [];
Object.defineProperty(arrObj, "1", { Object.defineProperty(arrObj, "1", {
set: undefined set: undefined
}); });
var hasProperty = arrObj.hasOwnProperty("1"); assert(arrObj.hasOwnProperty("1"));
Object.defineProperty(arrObj, "1", { Object.defineProperty(arrObj, "1", {
set: undefined set: undefined
}); });
var desc = Object.getOwnPropertyDescriptor(arrObj, "1"); var desc = Object.getOwnPropertyDescriptor(arrObj, "1");
var verifyGet = desc.hasOwnProperty("get") && typeof desc.get === "undefined"; assert(desc.hasOwnProperty("get") && typeof desc.get === "undefined");
assert(desc.hasOwnProperty("set") && typeof desc.set === "undefined");
var verifySet = desc.hasOwnProperty("set") && typeof desc.set === "undefined"; verifyNotEnumerable(arrObj, "1");
verifyNotConfigurable(arrObj, "1");
var verifyEnumerable = false;
for (var p in arrObj) {
if (p === "1") {
verifyEnumerable = true
}
}
var verifyConfigurable = false;
delete arrObj[1];
verifyConfigurable = arrObj.hasOwnProperty("1");
return hasProperty && verifyGet && verifySet && !verifyEnumerable && verifyConfigurable;
}

View File

@ -17,43 +17,34 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var arrObj = []; var arrObj = [];
function getFunc() { function getFunc() {
return 12; return 12;
} }
Object.defineProperty(arrObj, "1", { Object.defineProperty(arrObj, "1", {
get: getFunc get: getFunc
}); });
try { try {
Object.defineProperty(arrObj, "1", { Object.defineProperty(arrObj, "1", {
get: function () { get: function () {
return 14; return 14;
} }
}); });
return false; $ERROR("Expected TypeError");
} catch (e) { } catch (e) {
var hasProperty = arrObj.hasOwnProperty("1"); assert(e instanceof TypeError);
assert(arrObj.hasOwnProperty("1"));
var desc = Object.getOwnPropertyDescriptor(arrObj, "1"); var desc = Object.getOwnPropertyDescriptor(arrObj, "1");
var verifyGet = arrObj[1] === getFunc(); assert(arrObj[1] === getFunc());
var verifySet = desc.hasOwnProperty("set") && typeof desc.set === "undefined"; assert(desc.hasOwnProperty("set") && typeof desc.set === "undefined");
var verifyEnumerable = false; verifyNotEnumerable(arrObj, "1");
for (var p in arrObj) { verifyNotConfigurable(arrObj, "1");
if (p === "1") { }
verifyEnumerable = true
}
}
var verifyConfigurable = false;
delete arrObj[1];
verifyConfigurable = arrObj.hasOwnProperty("1");
return e instanceof TypeError && hasProperty && verifyGet &&
verifySet && !verifyEnumerable && verifyConfigurable;
}
}

View File

@ -16,40 +16,31 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var arrObj = []; var arrObj = [];
function getFunc() { function getFunc() {
return 12; return 12;
} }
Object.defineProperty(arrObj, "1", { Object.defineProperty(arrObj, "1", {
get: getFunc get: getFunc
}); });
try { try {
Object.defineProperty(arrObj, "1", { Object.defineProperty(arrObj, "1", {
get: undefined get: undefined
}); });
return false; $ERROR("Expected TypeError");
} catch (e) { } catch (e) {
var hasProperty = arrObj.hasOwnProperty("1"); assert(e instanceof TypeError);
assert(arrObj.hasOwnProperty("1"));
var desc = Object.getOwnPropertyDescriptor(arrObj, "1"); var desc = Object.getOwnPropertyDescriptor(arrObj, "1");
var verifyGet = arrObj[1] === getFunc(); assert(arrObj[1] === getFunc());
assert(desc.hasOwnProperty("set") && typeof desc.set === "undefined");
var verifySet = desc.hasOwnProperty("set") && typeof desc.set === "undefined"; verifyNotWritable(arrObj, "1");
var verifyEnumerable = false; verifyNotWritable(arrObj, "1");
for (var p in arrObj) { }
if (p === "1") {
verifyEnumerable = true
}
}
var verifyConfigurable = false;
delete arrObj[1];
verifyConfigurable = arrObj.hasOwnProperty("1");
return e instanceof TypeError && hasProperty && verifyGet &&
verifySet && !verifyEnumerable && verifyConfigurable;
}
}

View File

@ -12,16 +12,15 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
value: 2010, value: 2010,
writable: true, writable: true,
enumerable: true, enumerable: true,
configurable: false configurable: false
}); });
var beforeDelete = obj.hasOwnProperty("prop");
delete obj.prop; assert(obj.hasOwnProperty("prop"));
var afterDelete = obj.hasOwnProperty("prop"); verifyNotConfigurable(obj, "prop");
return beforeDelete && obj.prop === 2010 && afterDelete; assert.sameValue(obj.prop, 2010);
}

View File

@ -12,16 +12,15 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
value: 2010, value: 2010,
writable: true, writable: true,
enumerable: false, enumerable: false,
configurable: false configurable: false
}); });
var beforeDelete = obj.hasOwnProperty("prop");
delete obj.prop; assert(obj.hasOwnProperty("prop"));
var afterDelete = obj.hasOwnProperty("prop"); verifyNotConfigurable(obj, "prop");
return beforeDelete && obj.prop === 2010 && afterDelete; assert.sameValue(obj.prop, 2010);
}

View File

@ -13,16 +13,15 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = []; var obj = [];
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
value: 2010, value: 2010,
writable: false, writable: false,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
var verifyValue = (obj.prop === 2010);
obj.prop = 1001; assert.sameValue(obj.prop, 2010);
verifyNotWritable(obj, "prop");
return verifyValue && obj.prop === 2010;
}

View File

@ -14,18 +14,16 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = (function () { var obj = (function () {
return arguments; return arguments;
}()); }());
Object.defineProperty(obj, "0", { Object.defineProperty(obj, "0", {
value: 2010, value: 2010,
writable: false, writable: false,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
var valueVerify = (obj[0] === 2010);
obj[0] = 1001;
return valueVerify && obj[0] === 2010; assert.sameValue(obj[0], 2010);
} verifyNotWritable(obj, "0");

View File

@ -13,16 +13,14 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = []; var obj = [];
Object.defineProperty(obj, "0", { Object.defineProperty(obj, "0", {
value: 2010, value: 2010,
writable: false, writable: false,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
var verifyValue = (obj[0] === 2010);
obj[0] = 1001;
return verifyValue && obj[0] === 2010; assert.sameValue(obj[0], 2010);
} verifyNotWritable(obj, "0");

View File

@ -13,18 +13,16 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = (function () { var obj = (function () {
return arguments; return arguments;
}()); }());
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
value: 2010, value: 2010,
writable: false, writable: false,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
var valueVerify = (obj.prop === 2010);
obj.prop = 1001;
return valueVerify && obj.prop === 2010; assert.sameValue(obj.prop, 2010);
} verifyNotWritable(obj, "prop");

View File

@ -15,19 +15,19 @@ includes:
- fnGlobalObject.js - fnGlobalObject.js
---*/ ---*/
var obj = fnGlobalObject(); var obj = fnGlobalObject();
try { try {
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
value: 2010, value: 2010,
writable: false, writable: false,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
var valueVerify = (obj.prop === 2010);
obj.prop = 1001;
return valueVerify && obj.prop === 2010; assert.sameValue(obj.prop, 2010);
} finally { verifyNotWritable(obj, "prop");
} finally {
delete obj.prop; delete obj.prop;
} }
}

View File

@ -12,16 +12,14 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
value: 2010, value: 2010,
writable: false, writable: false,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
var propertyDefineCorrect = (obj.prop === 2010);
obj.prop = 1001;
return propertyDefineCorrect && obj.prop === 2010; assert.sameValue(obj.prop, 2010);
} verifyNotWritable(obj, "prop");

View File

@ -12,16 +12,14 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
value: 2010, value: 2010,
writable: false, writable: false,
enumerable: true, enumerable: true,
configurable: false configurable: false
}); });
var propertyDefineCorrect = (obj.prop === 2010);
obj.prop = 1001;
return propertyDefineCorrect && obj.prop === 2010; assert.sameValue(obj.prop, 2010);
} verifyNotWritable(obj, "prop");

View File

@ -12,16 +12,14 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
value: 2010, value: 2010,
writable: false, writable: false,
enumerable: true, enumerable: true,
configurable: false configurable: false
}); });
var beforeDelete = obj.hasOwnProperty("prop");
delete obj.prop; assert(obj.hasOwnProperty("prop"));
var afterDelete = obj.hasOwnProperty("prop"); verifyNotConfigurable(obj, "prop");
return beforeDelete && obj.prop === 2010 && afterDelete;
}

View File

@ -12,16 +12,14 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
value: 2010, value: 2010,
writable: false, writable: false,
enumerable: false, enumerable: false,
configurable: true configurable: true
}); });
var propertyDefineCorrect = (obj.prop === 2010);
obj.prop = 1001;
return propertyDefineCorrect && obj.prop === 2010; assert.sameValue(obj.prop, 2010);
} verifyNotWritable(obj, "prop");

View File

@ -12,16 +12,14 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
value: 2010, value: 2010,
writable: false, writable: false,
enumerable: false, enumerable: false,
configurable: false configurable: false
}); });
var propertyDefineCorrect = (obj.prop === 2010);
obj.prop = 1001;
return propertyDefineCorrect && obj.prop === 2010; assert.sameValue(obj.prop, 2010);
} verifyNotWritable(obj, "prop");

View File

@ -12,16 +12,14 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
value: 2010, value: 2010,
writable: false, writable: false,
enumerable: false, enumerable: false,
configurable: false configurable: false
}); });
var beforeDelete = obj.hasOwnProperty("prop");
delete obj.prop; assert(obj.hasOwnProperty("prop"));
var afterDelete = obj.hasOwnProperty("prop"); verifyNotConfigurable(obj, "prop");
return beforeDelete && obj.prop === 2010 && afterDelete;
}

View File

@ -13,18 +13,19 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
try { try {
Object.defineProperty(Number.prototype, "prop", { Object.defineProperty(Number.prototype, "prop", {
value: 1001, value: 1001,
writable: false, writable: false,
enumerable: false, enumerable: false,
configurable: true configurable: true
}); });
var numObj = new Number();
numObj.prop = 1002;
return !numObj.hasOwnProperty("prop") && numObj.prop === 1001; var numObj = new Number();
} finally {
assert(!numObj.hasOwnProperty("prop"));
verifyNotWritable(numObj, "prop", "noCheckOwnProp");
} finally {
delete Number.prototype.prop; delete Number.prototype.prop;
} }
}

View File

@ -13,17 +13,19 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
try { try {
Object.defineProperty(Object.prototype, "prop", { Object.defineProperty(Object.prototype, "prop", {
value: 1001, value: 1001,
writable: false, writable: false,
enumerable: false, enumerable: false,
configurable: true configurable: true
}); });
JSON.prop = 1002;
return !JSON.hasOwnProperty("prop") && JSON.prop === 1001; assert(!JSON.hasOwnProperty("prop"));
} finally { verifyNotWritable(JSON, "prop", "noCheckOwnProp");
assert.sameValue(JSON.prop, 1001);
} finally {
delete Object.prototype.prop; delete Object.prototype.prop;
} }
}

View File

@ -13,40 +13,45 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var appointment = new Object(); var appointment = new Object();
Object.defineProperty(appointment, "startTime", { Object.defineProperty(appointment, "startTime", {
value: 1001, value: 1001,
writable: false, writable: false,
enumerable: false, enumerable: false,
configurable: true configurable: true
}); });
Object.defineProperty(appointment, "name", { Object.defineProperty(appointment, "name", {
value: "NAME", value: "NAME",
writable: false, writable: false,
enumerable: false, enumerable: false,
configurable: true configurable: true
}); });
var meeting = Object.create(appointment); var meeting = Object.create(appointment);
Object.defineProperty(meeting, "conferenceCall", { Object.defineProperty(meeting, "conferenceCall", {
value: "In-person meeting", value: "In-person meeting",
writable: false, writable: false,
enumerable: false, enumerable: false,
configurable: true configurable: true
}); });
var teamMeeting = Object.create(meeting); var teamMeeting = Object.create(meeting);
teamMeeting.name = "Team Meeting";
var dateObj = new Date("10/31/2010 08:00");
teamMeeting.startTime = dateObj;
teamMeeting.conferenceCall = "4255551212";
var hasOwnProperty = !teamMeeting.hasOwnProperty("name") && //teamMeeting.name = "Team Meeting";
!teamMeeting.hasOwnProperty("startTime") && verifyNotWritable(teamMeeting, "name", "noCheckOwnProp");
!teamMeeting.hasOwnProperty('conferenceCall');
return hasOwnProperty && teamMeeting.name === "NAME" && var dateObj = new Date("10/31/2010 08:00");
teamMeeting.startTime === 1001 && //teamMeeting.startTime = dateObj;
teamMeeting.conferenceCall === "In-person meeting"; verifyNotWritable(teamMeeting, "startTime", "noCheckOwnProp");
}
//teamMeeting.conferenceCall = "4255551212";
verifyNotWritable(teamMeeting, "conferenceCall", "noCheckOwnProp");
assert(!teamMeeting.hasOwnProperty("name"));
assert(!teamMeeting.hasOwnProperty("startTime"));
assert(!teamMeeting.hasOwnProperty('conferenceCall'));
assert.sameValue(teamMeeting.name, "NAME");
assert.sameValue(teamMeeting.startTime, 1001);
assert.sameValue(teamMeeting.conferenceCall, "In-person meeting");

View File

@ -13,8 +13,8 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var foo = function () { }; var foo = function () { };
try { try {
Object.defineProperty(Function.prototype, "prop", { Object.defineProperty(Function.prototype, "prop", {
value: 1001, value: 1001,
writable: false, writable: false,
@ -23,10 +23,9 @@ includes: [propertyHelper.js]
}); });
var obj = foo.bind({}); var obj = foo.bind({});
obj.prop = 1002; assert(!obj.hasOwnProperty("prop"));
verifyNotWritable(foo, "prop", "noCheckOwnProp");
return !obj.hasOwnProperty("prop") && obj.prop === 1001; } finally {
} finally {
delete Function.prototype.prop; delete Function.prototype.prop;
} }
}

View File

@ -14,21 +14,22 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
get: undefined, get: undefined,
set: undefined, set: undefined,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
configurable: false configurable: false
}); });
var desc2 = Object.getOwnPropertyDescriptor(obj, "prop"); var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
delete obj.prop;
return desc1.configurable === true && desc2.configurable === false && obj.hasOwnProperty("prop"); verifyNotConfigurable(obj, "prop");
} assert.sameValue(desc1.configurable, true);
assert.sameValue(desc2.configurable, false);
assert(obj.hasOwnProperty("prop"));

View File

@ -13,19 +13,19 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
get: undefined, get: undefined,
set: undefined, set: undefined,
enumerable: true, enumerable: true,
configurable: false configurable: false
}); });
var propertyDefineCorrect = obj.hasOwnProperty("prop"); assert(obj.hasOwnProperty("prop"));
var desc = Object.getOwnPropertyDescriptor(obj, "prop");
delete obj.prop; var desc = Object.getOwnPropertyDescriptor(obj, "prop");
return propertyDefineCorrect && desc.configurable === false && obj.hasOwnProperty("prop"); assert.sameValue(desc.configurable, false);
}
verifyNotConfigurable(obj, "prop");

View File

@ -14,26 +14,31 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
get: undefined, get: undefined,
set: undefined, set: undefined,
enumerable: true, enumerable: true,
configurable: false configurable: false
}); });
var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
try { try {
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
configurable: true configurable: true
}); });
return false; $ERROR("Expected TypeError");
} catch (e) { } catch (e) {
var desc2 = Object.getOwnPropertyDescriptor(obj, "prop"); assert(e instanceof TypeError);
delete obj.prop;
return desc1.configurable === false && desc2.configurable === false && obj.hasOwnProperty("prop") && e instanceof TypeError; var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
}
} assert.sameValue(desc1.configurable, false);
assert.sameValue(desc2.configurable, false);
verifyNotConfigurable(obj, "prop");
assert(obj.hasOwnProperty("prop"));
}

View File

@ -14,21 +14,24 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
get: undefined, get: undefined,
set: undefined, set: undefined,
enumerable: false, enumerable: false,
configurable: true configurable: true
}); });
var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
configurable: false configurable: false
}); });
var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
delete obj.prop;
return desc1.configurable === true && desc2.configurable === false && obj.hasOwnProperty("prop"); var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
}
assert.sameValue(desc1.configurable, true);
assert.sameValue(desc2.configurable, false);
verifyNotConfigurable(obj, "prop");
assert(obj.hasOwnProperty("prop"));

View File

@ -13,19 +13,19 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
get: undefined, get: undefined,
set: undefined, set: undefined,
enumerable: false, enumerable: false,
configurable: false configurable: false
}); });
var propertyDefineCorrect = obj.hasOwnProperty("prop"); assert(obj.hasOwnProperty("prop"));
var desc = Object.getOwnPropertyDescriptor(obj, "prop");
delete obj.prop; var desc = Object.getOwnPropertyDescriptor(obj, "prop");
return propertyDefineCorrect && desc.configurable === false && obj.hasOwnProperty("prop"); assert.sameValue(desc.configurable, false);
}
verifyNotConfigurable(obj, "prop");

View File

@ -14,26 +14,31 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
get: undefined, get: undefined,
set: undefined, set: undefined,
enumerable: false, enumerable: false,
configurable: false configurable: false
}); });
var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
try { try {
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
configurable: true configurable: true
}); });
return false; $ERROR("Expected TypeError");
} catch (e) { } catch (e) {
var desc2 = Object.getOwnPropertyDescriptor(obj, "prop"); assert(e instanceof TypeError);
delete obj.prop;
return desc1.configurable === false && desc2.configurable === false && obj.hasOwnProperty("prop") && e instanceof TypeError; var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
}
} assert.sameValue(desc1.configurable, false);
assert.sameValue(desc2.configurable, false);
verifyNotConfigurable(obj, "prop");
assert(obj.hasOwnProperty("prop"));
}

View File

@ -14,26 +14,29 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var verifySetFunc = "data"; var verifySetFunc = "data";
var setFunc = function (value) { var setFunc = function (value) {
verifySetFunc = value; verifySetFunc = value;
}; };
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
get: undefined, get: undefined,
set: setFunc, set: setFunc,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
configurable: false configurable: false
}); });
var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
delete obj.prop;
return desc1.configurable === true && desc2.configurable === false && obj.hasOwnProperty("prop"); var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
}
assert.sameValue(desc1.configurable, true);
assert.sameValue(desc2.configurable, false);
verifyNotConfigurable(obj, "prop");
assert(obj.hasOwnProperty("prop"));

View File

@ -13,24 +13,26 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var verifySetFunc = "data"; var verifySetFunc = "data";
var setFunc = function (value) { var setFunc = function (value) {
verifySetFunc = value; verifySetFunc = value;
}; };
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
get: undefined, get: undefined,
set: setFunc, set: setFunc,
enumerable: true, enumerable: true,
configurable: false configurable: false
}); });
var propertyDefineCorrect = obj.hasOwnProperty("prop"); assert(obj.hasOwnProperty("prop"));
var desc = Object.getOwnPropertyDescriptor(obj, "prop");
delete obj.prop; var desc = Object.getOwnPropertyDescriptor(obj, "prop");
return propertyDefineCorrect && desc.configurable === false && obj.hasOwnProperty("prop"); verifyNotWritable(obj, "prop");
}
assert.sameValue(desc.configurable, false);
assert(obj.hasOwnProperty("prop"));

View File

@ -14,31 +14,36 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var verifySetFunc = "data"; var verifySetFunc = "data";
var setFunc = function (value) { var setFunc = function (value) {
verifySetFunc = value; verifySetFunc = value;
}; };
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
get: undefined, get: undefined,
set: setFunc, set: setFunc,
enumerable: true, enumerable: true,
configurable: false configurable: false
}); });
var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
try { try {
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
configurable: true configurable: true
}); });
return false; $ERROR("Expected TypeError");
} catch (e) { } catch (e) {
var desc2 = Object.getOwnPropertyDescriptor(obj, "prop"); assert(e instanceof TypeError);
delete obj.prop;
return desc1.configurable === false && desc2.configurable === false && obj.hasOwnProperty("prop") && e instanceof TypeError; var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
}
} assert.sameValue(desc1.configurable, false);
assert.sameValue(desc2.configurable, false);
verifyNotConfigurable(obj, "prop");
assert(obj.hasOwnProperty("prop"));
}

View File

@ -14,26 +14,30 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var verifySetFunc = "data"; var verifySetFunc = "data";
var setFunc = function (value) { var setFunc = function (value) {
verifySetFunc = value; verifySetFunc = value;
}; };
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
get: undefined, get: undefined,
set: setFunc, set: setFunc,
enumerable: false, enumerable: false,
configurable: true configurable: true
}); });
var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
configurable: false configurable: false
}); });
var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
delete obj.prop;
return desc1.configurable === true && desc2.configurable === false && obj.hasOwnProperty("prop"); var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
}
assert.sameValue(desc1.configurable, true);
assert.sameValue(desc2.configurable, false);
verifyNotConfigurable(obj, "prop");
assert(obj.hasOwnProperty("prop"));

View File

@ -13,24 +13,25 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var verifySetFunc = "data"; var verifySetFunc = "data";
var setFunc = function (value) { var setFunc = function (value) {
verifySetFunc = value; verifySetFunc = value;
}; };
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
get: undefined, get: undefined,
set: setFunc, set: setFunc,
enumerable: false, enumerable: false,
configurable: false configurable: false
}); });
var propertyDefineCorrect = obj.hasOwnProperty("prop"); assert(obj.hasOwnProperty("prop"));
var desc = Object.getOwnPropertyDescriptor(obj, "prop");
delete obj.prop; var desc = Object.getOwnPropertyDescriptor(obj, "prop");
return propertyDefineCorrect && desc.configurable === false && obj.hasOwnProperty("prop"); verifyNotConfigurable(obj, "prop");
} assert.sameValue(desc.configurable, false);
assert(obj.hasOwnProperty("prop"));

View File

@ -14,31 +14,36 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var verifySetFunc = "data"; var verifySetFunc = "data";
var setFunc = function (value) { var setFunc = function (value) {
verifySetFunc = value; verifySetFunc = value;
}; };
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
get: undefined, get: undefined,
set: setFunc, set: setFunc,
enumerable: false, enumerable: false,
configurable: false configurable: false
}); });
var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
try { try {
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
configurable: true configurable: true
}); });
return false; $ERROR("Expected TypeError");
} catch (e) { } catch (e) {
var desc2 = Object.getOwnPropertyDescriptor(obj, "prop"); assert(e instanceof TypeError);
delete obj.prop;
return desc1.configurable === false && desc2.configurable === false && obj.hasOwnProperty("prop") && e instanceof TypeError; var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
}
} verifyNotConfigurable(obj, "prop");
assert.sameValue(desc1.configurable, false);
assert.sameValue(desc2.configurable, false);
assert(obj.hasOwnProperty("prop"));
}

View File

@ -14,25 +14,29 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var getFunc = function () { var getFunc = function () {
return 1001; return 1001;
}; };
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
get: getFunc, get: getFunc,
set: undefined, set: undefined,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
configurable: false configurable: false
}); });
var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
delete obj.prop;
return desc1.configurable === true && desc2.configurable === false && obj.hasOwnProperty("prop"); var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
}
assert.sameValue(desc1.configurable, true);
assert.sameValue(desc2.configurable, false);
verifyNotWritable(obj, "prop");
assert(obj.hasOwnProperty("prop"));

View File

@ -13,23 +13,25 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var getFunc = function () { var getFunc = function () {
return 1001; return 1001;
}; };
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
get: getFunc, get: getFunc,
set: undefined, set: undefined,
enumerable: true, enumerable: true,
configurable: false configurable: false
}); });
var propertyDefineCorrect = obj.hasOwnProperty("prop"); assert(obj.hasOwnProperty("prop"));
var desc = Object.getOwnPropertyDescriptor(obj, "prop");
delete obj.prop; var desc = Object.getOwnPropertyDescriptor(obj, "prop");
return propertyDefineCorrect && desc.configurable === false && obj.hasOwnProperty("prop"); assert.sameValue(desc.configurable, false);
}
verifyNotConfigurable(obj, "prop");
assert(obj.hasOwnProperty("prop"));

View File

@ -14,30 +14,35 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var getFunc = function () { var getFunc = function () {
return 1001; return 1001;
}; };
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
get: getFunc, get: getFunc,
set: undefined, set: undefined,
enumerable: true, enumerable: true,
configurable: false configurable: false
}); });
var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
try { try {
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
configurable: true configurable: true
}); });
return false; $ERROR("Expected TypeError");
} catch (e) { } catch (e) {
var desc2 = Object.getOwnPropertyDescriptor(obj, "prop"); assert(e instanceof TypeError);
delete obj.prop;
return desc1.configurable === false && desc2.configurable === false && obj.hasOwnProperty("prop") && e instanceof TypeError; var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
}
} assert.sameValue(desc1.configurable, false);
assert.sameValue(desc2.configurable, false);
verifyNotConfigurable(obj, "prop");
assert(obj.hasOwnProperty("prop"));
}

View File

@ -14,25 +14,29 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var getFunc = function () { var getFunc = function () {
return 1001; return 1001;
}; };
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
get: getFunc, get: getFunc,
set: undefined, set: undefined,
enumerable: false, enumerable: false,
configurable: true configurable: true
}); });
var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
configurable: false configurable: false
}); });
var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
delete obj.prop;
return desc1.configurable === true && desc2.configurable === false && obj.hasOwnProperty("prop"); var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
}
assert.sameValue(desc1.configurable, true);
assert.sameValue(desc2.configurable, false);
verifyNotConfigurable(obj, "prop");
assert(obj.hasOwnProperty("prop"));

View File

@ -13,23 +13,24 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var getFunc = function () { var getFunc = function () {
return 1001; return 1001;
}; };
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
get: getFunc, get: getFunc,
set: undefined, set: undefined,
enumerable: false, enumerable: false,
configurable: false configurable: false
}); });
var propertyDefineCorrect = obj.hasOwnProperty("prop"); assert(obj.hasOwnProperty("prop"));
var desc = Object.getOwnPropertyDescriptor(obj, "prop"); var desc = Object.getOwnPropertyDescriptor(obj, "prop");
delete obj.prop; assert.sameValue(desc.configurable, false);
return propertyDefineCorrect && desc.configurable === false && obj.hasOwnProperty("prop"); verifyNotConfigurable(obj, "prop");
}
assert(obj.hasOwnProperty("prop"));

View File

@ -14,30 +14,35 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = {}; var obj = {};
var getFunc = function () { var getFunc = function () {
return 1001; return 1001;
}; };
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
get: getFunc, get: getFunc,
set: undefined, set: undefined,
enumerable: false, enumerable: false,
configurable: false configurable: false
}); });
var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
try { try {
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
configurable: true configurable: true
}); });
return false; $ERROR("Expected TypeError");
} catch (e) { } catch (e) {
var desc2 = Object.getOwnPropertyDescriptor(obj, "prop"); assert(e instanceof TypeError);
delete obj.prop;
return desc1.configurable === false && desc2.configurable === false && obj.hasOwnProperty("prop") && e instanceof TypeError; var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
}
} assert.sameValue(desc1.configurable, false);
assert.sameValue(desc2.configurable, false);
verifyNotConfigurable(obj, "prop");
assert(obj.hasOwnProperty("prop"));
}

View File

@ -13,22 +13,23 @@ description: >
includes: [propertyHelper.js] includes: [propertyHelper.js]
---*/ ---*/
var obj = []; var obj = [];
var verifySetFunc = "data"; var verifySetFunc = "data";
var getFunc = function () { var getFunc = function () {
return verifySetFunc; return verifySetFunc;
}; };
Object.defineProperty(obj, "0", { Object.defineProperty(obj, "0", {
get: getFunc, get: getFunc,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
obj[0] = "overrideData"; verifyNotWritable(obj, "0");
var propertyDefineCorrect = obj.hasOwnProperty("0");
var desc = Object.getOwnPropertyDescriptor(obj, "0"); assert(obj.hasOwnProperty("0"));
var desc = Object.getOwnPropertyDescriptor(obj, "0");
assert.sameValue(typeof desc.set, "undefined");
return propertyDefineCorrect && typeof desc.set === "undefined" && obj[0] === "data";
}