diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-354-8.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-354-8.js index b37dcae884f593d0a5baa720cd2480554f15890a..03a4f7472e319e9830001a7b4d45627085c1c328 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-4-354-8.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-354-8.js @@ -26,7 +26,7 @@ try { assert.sameValue(obj.prop, 2010); verifyNotWritable(obj, "prop"); - + assert.sameValue(obj.prop, 2010); } finally { delete obj.prop; } diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-360-3.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-360-3.js index 3077e9c0d44ae89a5a0f483cb2e62539c689a530..f4e07e9137a3f04a41934ae41e913d94582ccec2 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-4-360-3.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-360-3.js @@ -12,34 +12,35 @@ description: > to an accessor property, 'O' is the global object (8.12.9 - step 9.b.i) includes: - - runTestCase.js + - propertyHelper.js - fnGlobalObject.js ---*/ -function testcase() { - var obj = fnGlobalObject(); - try { - Object.defineProperty(obj, "prop", { - value: 2010, - writable: false, - enumerable: true, - configurable: true - }); - var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); +var obj = fnGlobalObject(); +try { + Object.defineProperty(obj, "prop", { + value: 2010, + writable: false, + enumerable: true, + configurable: true + }); + var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); - function getFunc() { - return 20; - } - Object.defineProperty(obj, "prop", { - get: getFunc - }); - var desc2 = Object.getOwnPropertyDescriptor(obj, "prop"); - - return desc1.hasOwnProperty("value") && desc2.hasOwnProperty("get") && - desc2.enumerable === true && desc2.configurable === true && - obj.prop === 20 && typeof desc2.set === "undefined" && desc2.get === getFunc; - } finally { - delete obj.prop; - } + function getFunc() { + return 20; } -runTestCase(testcase); + Object.defineProperty(obj, "prop", { + get: getFunc + }); + var desc2 = Object.getOwnPropertyDescriptor(obj, "prop"); + + assert(desc1.hasOwnProperty("value")); + assert(desc2.hasOwnProperty("get")); + assert.sameValue(desc2.enumerable, true); + assert.sameValue(desc2.configurable, true); + assert.sameValue(obj.prop, 20); + assert.sameValue(typeof desc2.set, "undefined"); + assert.sameValue(desc2.get, getFunc); +} finally { + delete obj.prop; +} diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-7.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-7.js index 6e35bab3f68f1a6e86582184ee86431d4a18ccd9..b83e4bba8cd240b4e77fb1e18c7915a70327b7c8 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-7.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-7.js @@ -10,29 +10,27 @@ description: > ES5 Attributes - Updating a named accessor property 'P' without [[Set]] using simple assignment is failed, 'O' is an Arguments object (8.12.5 step 5.b) -includes: [runTestCase.js] +includes: [propertyHelper.js] ---*/ -function testcase() { - var obj = (function () { - return arguments; - }()); +var obj = (function () { + return arguments; +}()); - var verifySetFunc = "data"; - var getFunc = function () { - return verifySetFunc; - }; +var verifySetFunc = "data"; +var getFunc = function () { + return verifySetFunc; +}; - Object.defineProperty(obj, "prop", { - get: getFunc, - enumerable: true, - configurable: true - }); +Object.defineProperty(obj, "prop", { + get: getFunc, + enumerable: true, + configurable: true +}); - obj.prop = "overrideData"; - var propertyDefineCorrect = obj.hasOwnProperty("prop"); - var desc = Object.getOwnPropertyDescriptor(obj, "prop"); +assert(obj.hasOwnProperty("prop")); +verifyNotWritable(obj, "prop"); +var desc = Object.getOwnPropertyDescriptor(obj, "prop"); - return propertyDefineCorrect && typeof desc.set === "undefined" && obj.prop === "data"; - } -runTestCase(testcase); +assert.sameValue(typeof desc.set, "undefined"); +assert.sameValue(obj.prop, "data"); diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-8.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-8.js index c68dd029bb24625898d709c7705f1381711ffa72..b5abfb0784eb32063b6bb06a5c97247dfb80fba0 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-8.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-8.js @@ -11,32 +11,30 @@ description: > [[Set]] using simple assignment is failed, 'O' is the global object (8.12.5 step 5.b) includes: - - runTestCase.js + - propertyHelper.js - fnGlobalObject.js ---*/ -function testcase() { - var obj = fnGlobalObject(); - try { - obj.verifySetFunc = "data"; - var getFunc = function () { - return obj.verifySetFunc; - }; +var obj = fnGlobalObject(); +try { + obj.verifySetFunc = "data"; + var getFunc = function () { + return obj.verifySetFunc; + }; - Object.defineProperty(obj, "prop", { - get: getFunc, - enumerable: true, - configurable: true - }); + Object.defineProperty(obj, "prop", { + get: getFunc, + enumerable: true, + configurable: true + }); - obj.prop = "overrideData"; - var propertyDefineCorrect = obj.hasOwnProperty("prop"); - var desc = Object.getOwnPropertyDescriptor(obj, "prop"); + assert(obj.hasOwnProperty("prop")); + var desc = Object.getOwnPropertyDescriptor(obj, "prop"); - return propertyDefineCorrect && typeof desc.set === "undefined" && obj.prop === "data"; - } finally { - delete obj.prop; - delete obj.verifySetFunc; - } - } -runTestCase(testcase); + verifyNotWritable(obj, "prop"); + assert.sameValue(typeof desc.set, "undefined"); + assert.sameValue(obj.prop, "data"); +} finally { + delete obj.prop; + delete obj.verifySetFunc; +} diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-537.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-537.js index b76bb85889da9cb483445171ec4f69984dc65dcd..8a888cdf1d3a1e88615d426d1911c75c96f854df 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-4-537.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-537.js @@ -11,35 +11,35 @@ description: > accessor property ([[Get]] is a Function, [[Set]] is a Function, [[Enumerable]] is true, [[Configurable]] is true) to different value -includes: [runTestCase.js] +includes: [propertyHelper.js] ---*/ -function testcase() { - var obj = {}; - - var getFunc = function () { - return 1001; - }; - - var verifySetFunc = "data"; - var setFunc = function (value) { - verifySetFunc = value; - }; - - Object.defineProperty(obj, "prop", { - get: getFunc, - set: setFunc, - enumerable: true, - configurable: true - }); - var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); - - Object.defineProperty(obj, "prop", { - configurable: false - }); - var desc2 = Object.getOwnPropertyDescriptor(obj, "prop"); - delete obj.prop; - - return desc1.configurable === true && desc2.configurable === false && obj.hasOwnProperty("prop"); - } -runTestCase(testcase); +var obj = {}; + +var getFunc = function () { + return 1001; +}; + +var verifySetFunc = "data"; +var setFunc = function (value) { + verifySetFunc = value; +}; + +Object.defineProperty(obj, "prop", { + get: getFunc, + set: setFunc, + enumerable: true, + configurable: true +}); + +var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); + +Object.defineProperty(obj, "prop", { + configurable: false +}); +var desc2 = Object.getOwnPropertyDescriptor(obj, "prop"); + +verifyNotConfigurable(obj, "prop"); +assert.sameValue(desc1.configurable, true); +assert.sameValue(desc2.configurable, false); +assert(obj.hasOwnProperty("prop")); diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-54.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-54.js index a7b66c03bb97031226f9b449720e9d6a0cb7c96b..e58352f118e77f78034e6410370791926a8dc6a9 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-4-54.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-54.js @@ -10,38 +10,24 @@ description: > Object.defineProperty - 'name' property doesn't exist in 'O', test [[Set]] of 'name' property of 'Attributes' is set as undefined value if absent in accessor descriptor 'desc' (8.12.9 step 4.b.i) -includes: [runTestCase.js] +includes: [propertyHelper.js] ---*/ -function testcase() { - var obj = {}; +var obj = {}; - Object.defineProperty(obj, "property", { - get: function () { - return "property"; - }, - enumerable: false, - configurable: false - }); +Object.defineProperty(obj, "property", { + get: function () { + return "property"; + }, + enumerable: false, + configurable: false +}); - if (obj.property !== "property") { - return false; - } - var desc = Object.getOwnPropertyDescriptor(obj, "property"); - if (typeof desc.set !== "undefined") { - return false; - } - for (var p in obj) { - if (p === "property") { - return false; - } - } - delete obj.property; - if (!obj.hasOwnProperty("property")) { - return false; - } +assert.sameValue(obj.property, "property"); - return true; - } -runTestCase(testcase); +var desc = Object.getOwnPropertyDescriptor(obj, "property"); +assert.sameValue(typeof desc.set, "undefined"); + +verifyNotEnumerable(obj, "property"); +verifyNotConfigurable(obj, "property"); diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-542.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-542.js index 7519e3a1f17dc36dcc0eace42e073fbcd240c36f..2411ec5f3e51832d9d7e2f112a9d1d0d6280f4c0 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-4-542.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-542.js @@ -10,33 +10,26 @@ description: > ES5 Attributes - property ([[Get]] is a Function, [[Set]] is a Function, [[Enumerable]] is true, [[Configurable]] is false) is undeletable -includes: [runTestCase.js] +includes: [propertyHelper.js] ---*/ -function testcase() { - var obj = {}; +var obj = {}; - var getFunc = function () { - return 1001; - }; +var getFunc = function () { + return 1001; +}; - var verifySetFunc = "data"; - var setFunc = function (value) { - verifySetFunc = value; - }; +var verifySetFunc = "data"; +var setFunc = function (value) { + verifySetFunc = value; +}; - Object.defineProperty(obj, "prop", { - get: getFunc, - set: setFunc, - enumerable: true, - configurable: false - }); +Object.defineProperty(obj, "prop", { + get: getFunc, + set: setFunc, + enumerable: true, + configurable: false +}); - var propertyDefineCorrect = obj.hasOwnProperty("prop"); - var desc = Object.getOwnPropertyDescriptor(obj, "prop"); - - delete obj.prop; - - return propertyDefineCorrect && desc.configurable === false && obj.hasOwnProperty("prop"); - } -runTestCase(testcase); +assert(obj.hasOwnProperty("prop")); +verifyNotConfigurable(obj, "prop"); diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-546.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-546.js index ca8d002ed734363aacb42c437f93a88426da70ae..b26eeed897fe6f47248f920fdc4ffb79a5fe6e8e 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-4-546.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-546.js @@ -11,40 +11,40 @@ description: > accessor property ([[Get]] is a Function, [[Set]] is a Function, [[Enumerable]] is true, [[Configurable]] is false) to different value -includes: [runTestCase.js] +includes: [propertyHelper.js] ---*/ -function testcase() { - var obj = {}; - - var getFunc = function () { - return 1001; - }; - - var verifySetFunc = "data"; - var setFunc = function (value) { - verifySetFunc = value; - }; - - Object.defineProperty(obj, "prop", { - get: getFunc, - set: setFunc, - enumerable: true, - configurable: false - }); - var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); - - try { - Object.defineProperty(obj, "prop", { - configurable: true - }); - - return false; - } catch (e) { - var desc2 = Object.getOwnPropertyDescriptor(obj, "prop"); - delete obj.prop; - - return desc1.configurable === false && desc2.configurable === false && obj.hasOwnProperty("prop") && e instanceof TypeError; - } - } -runTestCase(testcase); +var obj = {}; + +var getFunc = function () { + return 1001; +}; + +var verifySetFunc = "data"; +var setFunc = function (value) { + verifySetFunc = value; +}; + +Object.defineProperty(obj, "prop", { + get: getFunc, + set: setFunc, + enumerable: true, + configurable: false +}); +var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); + +try { + Object.defineProperty(obj, "prop", { + configurable: true + }); + + $ERROR("Expected TypeError"); +} catch (e) { + assert(e instanceof TypeError); + assert.sameValue(desc1.configurable, false); + + var desc2 = Object.getOwnPropertyDescriptor(obj, "prop"); + assert.sameValue(desc2.configurable, false); + + verifyNotConfigurable(obj, "prop"); +} diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-555.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-555.js index f008a75aef8013d55c58ae2a3027b72e4200776a..e052a0811b39a502940631e5c061188891f7b158 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-4-555.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-555.js @@ -11,36 +11,32 @@ description: > accessor property ([[Get]] is a Function, [[Set]] is a Function, [[Enumerable]] is false, [[Configurable]] is true) to different value -includes: [runTestCase.js] +includes: [propertyHelper.js] ---*/ -function testcase() { - var obj = {}; +var obj = {}; - var getFunc = function () { - return 1001; - }; +var getFunc = function () { + return 1001; +}; - var verifySetFunc = "data"; - var setFunc = function (value) { - verifySetFunc = value; - }; +var verifySetFunc = "data"; +var setFunc = function (value) { + verifySetFunc = value; +}; - Object.defineProperty(obj, "prop", { - get: getFunc, - set: setFunc, - enumerable: false, - configurable: true - }); +Object.defineProperty(obj, "prop", { + get: getFunc, + set: setFunc, + enumerable: false, + configurable: true +}); - var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); +var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); +assert.sameValue(desc1.configurable, true); - Object.defineProperty(obj, "prop", { - configurable: false - }); - var desc2 = Object.getOwnPropertyDescriptor(obj, "prop"); - delete obj.prop; +Object.defineProperty(obj, "prop", { + configurable: false +}); - return desc1.configurable === true && desc2.configurable === false && obj.hasOwnProperty("prop"); - } -runTestCase(testcase); +verifyNotConfigurable(obj, "prop"); diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-560.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-560.js index 813252e94f5017f2dc17ca8a6228be953e6a5cf3..878e10213175c8bcfcf622e89fca1b204e87b95d 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-4-560.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-560.js @@ -10,33 +10,26 @@ description: > ES5 Attributes - property ([[Get]] is a Function, [[Set]] is a Function, [[Enumerable]] is false, [[Configurable]] is false) is undeletable -includes: [runTestCase.js] +includes: [propertyHelper.js] ---*/ -function testcase() { - var obj = {}; +var obj = {}; - var getFunc = function () { - return 1001; - }; +var getFunc = function () { + return 1001; +}; - var verifySetFunc = "data"; - var setFunc = function (value) { - verifySetFunc = value; - }; +var verifySetFunc = "data"; +var setFunc = function (value) { + verifySetFunc = value; +}; - Object.defineProperty(obj, "prop", { - get: getFunc, - set: setFunc, - enumerable: false, - configurable: false - }); +Object.defineProperty(obj, "prop", { + get: getFunc, + set: setFunc, + enumerable: false, + configurable: false +}); - var propertyDefineCorrect = obj.hasOwnProperty("prop"); - var desc = Object.getOwnPropertyDescriptor(obj, "prop"); - - delete obj.prop; - - return propertyDefineCorrect && desc.configurable === false && obj.hasOwnProperty("prop"); - } -runTestCase(testcase); +assert(obj.hasOwnProperty("prop")); +verifyNotConfigurable(obj, "prop"); diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-564.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-564.js index 367ef618f3f63eda3060633d2760f8c94f3e0275..8355e7d2954930b709d8e284c141c44dca5e9054 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-4-564.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-564.js @@ -11,40 +11,36 @@ description: > accessor property ([[Get]] is a Function, [[Set]] is a Function, [[Enumerable]] is false, [[Configurable]] is false) to different value -includes: [runTestCase.js] +includes: [propertyHelper.js] ---*/ -function testcase() { - var obj = {}; - - var getFunc = function () { - return 1001; - }; - - var verifySetFunc = "data"; - var setFunc = function (value) { - verifySetFunc = value; - }; - - Object.defineProperty(obj, "prop", { - get: getFunc, - set: setFunc, - enumerable: false, - configurable: false - }); - var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); - - try { - Object.defineProperty(obj, "prop", { - configurable: true - }); - - return false; - } catch (e) { - var desc2 = Object.getOwnPropertyDescriptor(obj, "prop"); - delete obj.prop; - - return desc1.configurable === false && desc2.configurable === false && obj.hasOwnProperty("prop") && e instanceof TypeError; - } - } -runTestCase(testcase); +var obj = {}; + +var getFunc = function () { + return 1001; +}; + +var verifySetFunc = "data"; +var setFunc = function (value) { + verifySetFunc = value; +}; + +Object.defineProperty(obj, "prop", { + get: getFunc, + set: setFunc, + enumerable: false, + configurable: false +}); +var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); + +try { + Object.defineProperty(obj, "prop", { + configurable: true + }); + + $ERROR("Expected TypeError"); +} catch (e) { + assert(e instanceof TypeError); + assert.sameValue(desc1.configurable, false); + verifyNotConfigurable(obj, "prop"); +} diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-581.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-581.js index ee72423b65e32a446711f59cdb58f935dcb44009..17f85963203424f54d9855c6ac6e881cb425ec12 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-4-581.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-581.js @@ -7,25 +7,25 @@ /*--- es5id: 15.2.3.6-4-581 description: ES5 Attributes - Fail to add property into object (Number instance) -includes: [runTestCase.js] +includes: [propertyHelper.js] ---*/ -function testcase() { - var data = "data"; - try { - Object.defineProperty(Number.prototype, "prop", { - get: function () { - return data; - }, - enumerable: false, - configurable: true - }); - var numObj = new Number(); - numObj.prop = "myOwnProperty"; +var data = "data"; +try { + Object.defineProperty(Number.prototype, "prop", { + get: function () { + return data; + }, + enumerable: false, + configurable: true + }); + var numObj = new Number(); - return !numObj.hasOwnProperty("prop") && numObj.prop === "data" && data === "data"; - } finally { - delete Number.prototype.prop; - } - } -runTestCase(testcase); + verifyNotWritable(numObj, "prop", "nocheck"); + + assert(!numObj.hasOwnProperty("prop")); + assert.sameValue(numObj.prop, "data"); + assert.sameValue(data, "data"); +} finally { + delete Number.prototype.prop; +} diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-586.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-586.js index 9c2f6bebe0aa876b4456a30b12ef395a1ebd8cd4..4cc1115a88b8712c3ee6644e4e2ea79d2552d8fd 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-4-586.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-586.js @@ -9,24 +9,23 @@ es5id: 15.2.3.6-4-586 description: > ES5 Attributes - Fail to update value of property into of [[Proptotype]] internal property (JSON) -includes: [runTestCase.js] +includes: [propertyHelper.js] ---*/ -function testcase() { - var data = "data"; - try { - Object.defineProperty(Object.prototype, "prop", { - get: function () { - return data; - }, - enumerable: false, - configurable: true - }); - JSON.prop = "myOwnProperty"; +var data = "data"; +try { + Object.defineProperty(Object.prototype, "prop", { + get: function () { + return data; + }, + enumerable: false, + configurable: true + }); + verifyNotWritable(JSON, "prop", "nocheck"); - return !JSON.hasOwnProperty("prop") && JSON.prop === "data" && data === "data"; - } finally { - delete Object.prototype.prop; - } - } -runTestCase(testcase); + assert(!JSON.hasOwnProperty("prop")); + assert.sameValue(JSON.prop, "data"); + assert.sameValue(data, "data"); +} finally { + delete Object.prototype.prop; +} diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-591.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-591.js index c063f60b7fbdcded9c670380b1d389cc258cb5a4..699305d7d247e046f298f712f14c60fd68057ffe 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-4-591.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-591.js @@ -9,51 +9,61 @@ es5id: 15.2.3.6-4-591 description: > ES5 Attributes - Fail to update value of property of [[Proptotype]] internal property (Object.create) -includes: [runTestCase.js] +includes: [propertyHelper.js] ---*/ -function testcase() { - var appointment = {}; - - var data1 = 1001; - Object.defineProperty(appointment, "startTime", { - get: function () { - return data1; - }, - enumerable: false, - configurable: false - }); - var data2 = "NAME"; - Object.defineProperty(appointment, "name", { - get: function () { - return data2; - }, - enumerable: false, - configurable: true - }); - - var meeting = Object.create(appointment); - var data3 = "In-person meeting"; - Object.defineProperty(meeting, "conferenceCall", { - get: function () { - return data3; - }, - enumerable: false, - configurable: false - }); - - var teamMeeting = Object.create(meeting); - teamMeeting.name = "IE Team Meeting"; - var dateObj = new Date("10/31/2010 08:00"); - teamMeeting.startTime = dateObj; - teamMeeting.conferenceCall = "4255551212"; - - var hasOwnProperty = !teamMeeting.hasOwnProperty("name") && - !teamMeeting.hasOwnProperty("startTime") && - !teamMeeting.hasOwnProperty('conferenceCall'); - - return hasOwnProperty && teamMeeting.name === "NAME" && - teamMeeting.startTime === 1001 && - teamMeeting.conferenceCall === "In-person meeting"; - } -runTestCase(testcase); +var appointment = {}; + +var data1 = 1001; +Object.defineProperty(appointment, "startTime", { + get: function () { + return data1; + }, + enumerable: false, + configurable: false +}); +var data2 = "NAME"; +Object.defineProperty(appointment, "name", { + get: function () { + return data2; + }, + enumerable: false, + configurable: true +}); + +var meeting = Object.create(appointment); +var data3 = "In-person meeting"; +Object.defineProperty(meeting, "conferenceCall", { + get: function () { + return data3; + }, + enumerable: false, + configurable: false +}); + +var teamMeeting = Object.create(meeting); + +verifyNotWritable(teamMeeting, "name", "nocheck"); +verifyNotWritable(teamMeeting, "startTime", "nocheck"); +verifyNotWritable(teamMeeting, "conferenceCall", "nocheck"); + +try { + teamMeeting.name = "IE Team Meeting"; +} catch (e) {} + +try { + var dateObj = new Date("10/31/2010 08:00"); + teamMeeting.startTime = dateObj; +} catch (e) {} + +try { + teamMeeting.conferenceCall = "4255551212"; +} catch (e) {} + +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"); diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-596.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-596.js index b0f14b119b898cfcd6d7a13a7b239d163ffd73ba..5755af04ef2535f61399ca89f800b81700585e7d 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-4-596.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-596.js @@ -9,27 +9,25 @@ es5id: 15.2.3.6-4-596 description: > ES5 Attributes - Fail to update value of property into of [[Proptotype]] internal property (Function.prototype.bind) -includes: [runTestCase.js] +includes: [propertyHelper.js] ---*/ -function testcase() { - var foo = function () { }; - var data = "data"; - try { - Object.defineProperty(Function.prototype, "prop", { - get: function () { - return data; - }, - enumerable: false, - configurable: true - }); +var foo = function () { }; +var data = "data"; +try { + Object.defineProperty(Function.prototype, "prop", { + get: function () { + return data; + }, + enumerable: false, + configurable: true + }); - var obj = foo.bind({}); - obj.prop = "overrideData"; + var obj = foo.bind({}); - return !obj.hasOwnProperty("prop") && obj.prop === "data"; - } finally { - delete Function.prototype.prop; - } - } -runTestCase(testcase); + assert(!obj.hasOwnProperty("prop")); + verifyNotWritable(obj, "prop", "nocheck"); + assert.sameValue(obj.prop, "data");; +} finally { + delete Function.prototype.prop; +} diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-63.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-63.js index 4d324d0f3f5d15d5745c084623409f913da19d61..770a9f5807068d49023784e94a48011e11c75051 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-4-63.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-63.js @@ -9,37 +9,19 @@ es5id: 15.2.3.6-4-63 description: > Object.defineProperty - both desc.value and name.value are NaN (8.12.9 step 6) -includes: [runTestCase.js] +includes: [propertyHelper.js] ---*/ -function testcase() { +var obj = {}; - var obj = {}; +Object.defineProperty(obj, "foo", { value: NaN }); - Object.defineProperty(obj, "foo", { value: NaN }); +Object.defineProperty(obj, "foo", { value: NaN }); - Object.defineProperty(obj, "foo", { value: NaN }); +assert(isNaN(obj.foo)); - if (!isNaN(obj.foo)) { - return false; - } +verifyNotWritable(obj, "foo"); - obj.foo = "verifyValue"; - if (obj.foo === "verifyValue") { - return false; - } +verifyNotEnumerable(obj, "foo"); - for (var prop in obj) { - if (obj.hasOwnProperty(prop) && prop === "foo") { - return false; - } - } - - delete obj.foo; - if (!obj.hasOwnProperty("foo")) { - return false; - } - - return true; - } -runTestCase(testcase); +verifyNotConfigurable(obj, "foo"); diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-85.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-85.js index fae677cac972f3f31ab3bc0f6a58104ab9274db7..3a9484adeb74ef8184d38b2c799632b73e564cad 100644 --- a/test/built-ins/Object/defineProperty/15.2.3.6-4-85.js +++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-85.js @@ -10,45 +10,27 @@ description: > Object.defineProperty will not throw TypeError if name.configurable = false, name.writable = false, name.value = NaN and desc.value = NaN (8.12.9 step 10.a.ii.1) -includes: [runTestCase.js] +includes: [propertyHelper.js] ---*/ -function testcase() { - - var obj = {}; - - Object.defineProperty(obj, "foo", { - value: NaN, - writable: false, - configurable: false - }); - - Object.defineProperty(obj, "foo", { - value: NaN, - writable: false, - configurable: false - }); - - if (!isNaN(obj.foo)) { - return false; - } - - obj.foo = "verifyValue"; - if (obj.foo === "verifyValue") { - return false; - } - - for (var prop in obj) { - if (obj.hasOwnProperty(prop) && prop === "foo") { - return false; - } - } - - delete obj.foo; - if (!obj.hasOwnProperty("foo")) { - return false; - } - - return true; - } -runTestCase(testcase); +var obj = {}; + +Object.defineProperty(obj, "foo", { + value: NaN, + writable: false, + configurable: false +}); + +Object.defineProperty(obj, "foo", { + value: NaN, + writable: false, + configurable: false +}); + +assert(isNaN(obj.foo)); + +verifyNotWritable(obj, "foo"); + +verifyNotEnumerable(obj, "foo"); + +verifyNotConfigurable(obj, "foo");