From 26ede592a8cb0c09cc640baa867d1b2eea38e535 Mon Sep 17 00:00:00 2001 From: smikes Date: Wed, 6 May 2015 13:26:45 -0600 Subject: [PATCH] fix tests in strict mode - Object/defineProperty --- .../Object/defineProperty/15.2.3.6-4-354-8.js | 2 +- .../Object/defineProperty/15.2.3.6-4-360-3.js | 53 +++++------ .../Object/defineProperty/15.2.3.6-4-531-7.js | 38 ++++---- .../Object/defineProperty/15.2.3.6-4-531-8.js | 44 +++++---- .../Object/defineProperty/15.2.3.6-4-537.js | 50 +++++----- .../Object/defineProperty/15.2.3.6-4-54.js | 44 +++------ .../Object/defineProperty/15.2.3.6-4-542.js | 41 ++++----- .../Object/defineProperty/15.2.3.6-4-546.js | 58 ++++++------ .../Object/defineProperty/15.2.3.6-4-555.js | 46 +++++----- .../Object/defineProperty/15.2.3.6-4-560.js | 41 ++++----- .../Object/defineProperty/15.2.3.6-4-564.js | 56 ++++++----- .../Object/defineProperty/15.2.3.6-4-581.js | 38 ++++---- .../Object/defineProperty/15.2.3.6-4-586.js | 35 ++++--- .../Object/defineProperty/15.2.3.6-4-591.js | 92 ++++++++++--------- .../Object/defineProperty/15.2.3.6-4-596.js | 38 ++++---- .../Object/defineProperty/15.2.3.6-4-63.js | 34 ++----- .../Object/defineProperty/15.2.3.6-4-85.js | 50 ++++------ 17 files changed, 346 insertions(+), 414 deletions(-) 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 b37dcae884..03a4f7472e 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 3077e9c0d4..f4e07e9137 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 6e35bab3f6..b83e4bba8c 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 c68dd029bb..b5abfb0784 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 b76bb85889..8a888cdf1d 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 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: true - }); - var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); +Object.defineProperty(obj, "prop", { + get: getFunc, + set: setFunc, + enumerable: true, + configurable: true +}); - Object.defineProperty(obj, "prop", { - configurable: false - }); - var desc2 = Object.getOwnPropertyDescriptor(obj, "prop"); - delete obj.prop; +var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); - return desc1.configurable === true && desc2.configurable === false && obj.hasOwnProperty("prop"); - } -runTestCase(testcase); +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 a7b66c03bb..e58352f118 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 7519e3a1f1..2411ec5f3e 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 ca8d002ed7..b26eeed897 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 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 - }); - var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); +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 - }); +try { + Object.defineProperty(obj, "prop", { + configurable: true + }); - return false; - } catch (e) { - var desc2 = Object.getOwnPropertyDescriptor(obj, "prop"); - delete obj.prop; + $ERROR("Expected TypeError"); +} catch (e) { + assert(e instanceof TypeError); + assert.sameValue(desc1.configurable, false); - return desc1.configurable === false && desc2.configurable === false && obj.hasOwnProperty("prop") && e instanceof TypeError; - } - } -runTestCase(testcase); + 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 f008a75aef..e052a0811b 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 813252e94f..878e102131 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 367ef618f3..8355e7d295 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 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 - }); - var desc1 = Object.getOwnPropertyDescriptor(obj, "prop"); +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 - }); +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); + $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 ee72423b65..17f8596320 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 9c2f6bebe0..4cc1115a88 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 c063f60b7f..699305d7d2 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 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 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 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 teamMeeting = Object.create(meeting); - var hasOwnProperty = !teamMeeting.hasOwnProperty("name") && - !teamMeeting.hasOwnProperty("startTime") && - !teamMeeting.hasOwnProperty('conferenceCall'); +verifyNotWritable(teamMeeting, "name", "nocheck"); +verifyNotWritable(teamMeeting, "startTime", "nocheck"); +verifyNotWritable(teamMeeting, "conferenceCall", "nocheck"); - return hasOwnProperty && teamMeeting.name === "NAME" && - teamMeeting.startTime === 1001 && - teamMeeting.conferenceCall === "In-person meeting"; - } -runTestCase(testcase); +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 b0f14b119b..5755af04ef 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 4d324d0f3f..770a9f5807 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 fae677cac9..3a9484adeb 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 = {}; - var obj = {}; +Object.defineProperty(obj, "foo", { + value: NaN, + writable: false, + configurable: false +}); - Object.defineProperty(obj, "foo", { - value: NaN, - writable: false, - configurable: false - }); +Object.defineProperty(obj, "foo", { + value: NaN, + writable: false, + configurable: false +}); - Object.defineProperty(obj, "foo", { - value: NaN, - writable: false, - configurable: false - }); +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");