aboutsummaryrefslogtreecommitdiffstats
path: root/website/resources/scripts/testcases2/15.2.3.5.json
diff options
context:
space:
mode:
Diffstat (limited to 'website/resources/scripts/testcases2/15.2.3.5.json')
-rw-r--r--website/resources/scripts/testcases2/15.2.3.5.json2205
1 files changed, 2205 insertions, 0 deletions
diff --git a/website/resources/scripts/testcases2/15.2.3.5.json b/website/resources/scripts/testcases2/15.2.3.5.json
new file mode 100644
index 000000000..65cccbe4c
--- /dev/null
+++ b/website/resources/scripts/testcases2/15.2.3.5.json
@@ -0,0 +1,2205 @@
+{
+ "testCollection": {
+ "name": "15.2.3.5",
+ "numTests": 314,
+ "tests": [
+ {
+ "id": "15.2.3.5-0-1",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-0-1.js",
+ "description": "Object.create must exist as a function",
+ "test": "assertTrue((typeof(Object.create) === \"function\"));\n"
+ },
+ {
+ "id": "15.2.3.5-0-2",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-0-2.js",
+ "description": "Object.create must exist as a function taking 2 parameters",
+ "test": "assertTrue((Object.create.length === 2));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-1-1",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-1-1.js",
+ "description": "Object.create throws TypeError if 'O' is undefined",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create(undefined);\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-1-2",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-1-2.js",
+ "description": "Object.create TypeError is not thrown if 'O' is null",
+ "test": "assertTrue((function testcase() {\n try {\n Object.create(null);\n return true;\n } catch (e) {\n return false;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-1-3",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-1-3.js",
+ "description": "Object.create throws TypeError if 'O' is a boolean primitive",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create(true);\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-1-4",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-1-4.js",
+ "description": "Object.create throws TypeError if 'O' is a number primitive",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create(2);\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-1",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-1.js",
+ "description": "Object.create throws TypeError if type of first param is not Object",
+ "test": "assertTrue((function testcase() {\n try {\n Object.create(0);\n }\n catch (e) {\n if (e instanceof TypeError) {\n return true;\n }\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-2-1",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-2-1.js",
+ "description": "Object.create creates new Object",
+ "test": "assertTrue((function testcase() {\n function base() {}\n var b = new base();\n var prop = new Object();\n var d = Object.create(b);\n\n if (typeof d === 'object') {\n return true;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.getPrototypeOf))"
+ },
+ {
+ "id": "15.2.3.5-2-2",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-2-2.js",
+ "description": "Object.create - returned object is an instance of Object",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({});\n return newObj instanceof Object;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-3-1",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-3-1.js",
+ "description": "Object.create sets the prototype of the passed-in object",
+ "test": "assertTrue((function testcase() {\n function base() {}\n var b = new base();\n var d = Object.create(b);\n\n if (Object.getPrototypeOf(d) === b &&\n b.isPrototypeOf(d) === true) {\n return true;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.getPrototypeOf))"
+ },
+ {
+ "id": "15.2.3.5-4-1",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-1.js",
+ "description": "Object.create sets the prototype of the passed-in object and adds new properties",
+ "test": "assertTrue((function testcase() {\n function base() {}\n var b = new base();\n var prop = new Object();\n var d = Object.create(b,{ \"x\": {value: true,writable: false},\n \"y\": {value: \"str\",writable: false} });\n\n if (Object.getPrototypeOf(d) === b &&\n b.isPrototypeOf(d) === true &&\n d.x === true &&\n d.y === \"str\" &&\n b.x === undefined &&\n b.y === undefined) {\n return true;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.getPrototypeOf))"
+ },
+ {
+ "id": "15.2.3.5-4-10",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-10.js",
+ "description": "Object.create - argument 'Properties' is the Math object (15.2.3.7 step 2)",
+ "test": "assertTrue((function testcase() {\n\n var result = false;\n Object.defineProperty(Math, \"prop\", {\n get: function () {\n result = (this === Math);\n return {};\n },\n enumerable: true,\n configurable: true\n });\n\n try {\n var newObj = Object.create({}, Math);\n return result && newObj.hasOwnProperty(\"prop\");\n } finally {\n delete Math.prop;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-100",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-100.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is not present (8.10.5 step 4)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n value: \"ownDataProperty\"\n }\n });\n\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-101",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-101.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is own data property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: false\n }\n });\n\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-102",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-102.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is an inherited data property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n \n var proto = {\n configurable: true\n };\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === false;\n\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-103",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-103.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is own data property that overrides an inherited data property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {\n configurable: true\n };\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"configurable\", {\n value: false\n });\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-104",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-104.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is own data property that overrides an inherited accessor property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n Object.defineProperty(proto, \"configurable\", {\n get: function () {\n return true;\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"configurable\", {\n value: false\n });\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-105",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-105.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is own accessor property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n var descObj = {};\n Object.defineProperty(descObj, \"configurable\", {\n get: function () {\n return true;\n }\n });\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-106",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-106.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is an inherited accessor property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n\n Object.defineProperty(proto, \"configurable\", {\n get: function () {\n return true;\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-107",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-107.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is own accessor property that overrides an inherited data property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {\n configurable: true\n };\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"configurable\", {\n get: function () {\n return false;\n }\n });\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-108",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-108.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is own accessor property that overrides an inherited accessor property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n Object.defineProperty(proto, \"configurable\", {\n get: function () {\n return true;\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"configurable\", {\n get: function () {\n return false;\n }\n });\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-109",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-109.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is own accessor property without a get function (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n var descObj = {};\n Object.defineProperty(descObj, \"configurable\", {\n set: function () { }\n });\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-11",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-11.js",
+ "description": "Object.create - argument 'Properties' is a Date object (15.2.3.7 step 2)",
+ "test": "assertTrue((function testcase() {\n\n var props = new Date();\n var result = false;\n\n Object.defineProperty(props, \"prop\", {\n get: function () {\n result = this instanceof Date;\n return {};\n },\n enumerable: true\n });\n var newObj = Object.create({}, props);\n return result && newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-110",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-110.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is own accessor property without a get function, which overrides an inherited accessor property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n Object.defineProperty(proto, \"configurable\", {\n get: function () {\n return true;\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"configurable\", {\n set: function () { }\n });\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-111",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-111.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is an inherited accessor property without a get function (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n\n Object.defineProperty(proto, \"configurable\", {\n set: function () { }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-112",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-112.js",
+ "description": "Object.create - one property in 'Properties' is a Function object which implements its own [[Get]] method to access the 'configurable' property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n var descObj = function () { };\n\n descObj.configurable = true;\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-113",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-113.js",
+ "description": "Object.create - one property in 'Properties' is an Array object that uses Object's [[Get]] method to access the 'configurable' property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n var descObj = [];\n\n descObj.configurable = true;\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-114",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-114.js",
+ "description": "Object.create - one property in 'Properties' is a String object that uses Object's [[Get]] method to access the 'configurable' property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n var descObj = new String();\n\n descObj.configurable = true;\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-115",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-115.js",
+ "description": "Object.create - one property in 'Properties' is a Boolean object that uses Object's [[Get]] method to access the 'configurable' property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n var descObj = new Boolean(false);\n\n descObj.configurable = true;\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-116",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-116.js",
+ "description": "Object.create - one property in 'Properties' is a Number object that uses Object's [[Get]] method to access the 'configurable' property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n var descObj = new Number(-9);\n\n descObj.configurable = true;\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-117",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-117.js",
+ "description": "Object.create - one property in 'Properties' is the Math object that uses Object's [[Get]] method to access the 'configurable' property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Math.configurable = true;\n\n var newObj = Object.create({}, {\n prop: Math\n });\n\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === false;\n } finally {\n delete Math.configurable;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-118",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-118.js",
+ "description": "Object.create - one property in 'Properties' is a Date object that uses Object's [[Get]] method to access the 'configurable' property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n var descObj = new Date();\n\n descObj.configurable = true;\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-119",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-119.js",
+ "description": "Object.create - one property in 'Properties' is a Date object that uses Object's [[Get]] method to access the 'configurable' property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n var descObj = new RegExp();\n\n descObj.configurable = true;\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-12",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-12.js",
+ "description": "Object.create - argument 'Properties' is a RegExp object (15.2.3.7 step 2)",
+ "test": "assertTrue((function testcase() {\n\n var props = new RegExp();\n var result = false;\n\n Object.defineProperty(props, \"prop\", {\n get: function () {\n result = this instanceof RegExp;\n return {};\n },\n enumerable: true\n });\n var newObj = Object.create({}, props);\n return result && newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-120",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-120.js",
+ "description": "Object.create - one property in 'Properties' is the JSON object that uses Object's [[Get]] method to access the 'configurable' property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n try {\n JSON.configurable = true;\n\n var newObj = Object.create({}, {\n prop: JSON \n });\n\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === false;\n } finally {\n delete JSON.configurable;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-121",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-121.js",
+ "description": "Object.create - one property in 'Properties' is an Error object that uses Object's [[Get]] method to access the 'configurable' property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n var descObj = new Error();\n\n descObj.configurable = true;\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-122",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-122.js",
+ "description": "Object.create - one property in 'Properties' is an Arguments object which implements its own [[Get]] method to access the 'configurable' property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n var argObj = (function () { return arguments; })();\n\n argObj.configurable = true;\n\n var newObj = Object.create({}, {\n prop: argObj\n });\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-124",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-124.js",
+ "description": "Object.create - one property in 'Properties' is the global object that uses Object's [[Get]] method to access the 'configurable' property (8.10.5 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n try {\n fnGlobalObject().configurable = true;\n\n var newObj = Object.create({}, {\n prop: fnGlobalObject() \n });\n\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === false;\n } finally {\n delete fnGlobalObject().configurable;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-125",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-125.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is undefined (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: undefined\n }\n });\n\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-126",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-126.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is null (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: null\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-127",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-127.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is true (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: true\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-128",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-128.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is false (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: false\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-129",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-129.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is 0 (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: 0\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-13",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-13.js",
+ "description": "Object.create - argument 'Properties' is the JSON object (15.2.3.7 step 2)",
+ "test": "assertTrue((function testcase() {\n\n var result = false;\n\n Object.defineProperty(JSON, \"prop\", {\n get: function () {\n result = (this === JSON);\n return {};\n },\n enumerable: true,\n configurable: true\n });\n\n try {\n var newObj = Object.create({}, JSON);\n return result && newObj.hasOwnProperty(\"prop\");\n } finally {\n delete JSON.prop;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-130",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-130.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is +0 (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: +0\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-131",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-131.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is -0 (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: -0\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-132",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-132.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is NaN (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: NaN\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-133",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-133.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is a positive number (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: 123\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-134",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-134.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is a negative number (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: -123\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-135",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-135.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is an empty string (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: \"\"\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-136",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-136.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is a non-empty string (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: \"abc\"\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-137",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-137.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is a Function object (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: function () { }\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-138",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-138.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is an Array object (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: []\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-139",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-139.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is a String object (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: new String(\"abc\")\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-14",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-14.js",
+ "description": "Object.create - argument 'Properties' is an Error object (15.2.3.7 step 2)",
+ "test": "assertTrue((function testcase() {\n\n var props = new Error(\"test\");\n var result = false;\n\n (Object.getOwnPropertyNames(props)).forEach(function(name){\n props[name] = {value:11, configurable:true}\n });\n\n Object.defineProperty(props, \"prop15_2_3_5_4_14\", {\n get: function () {\n result = this instanceof Error;\n return {};\n },\n enumerable: true\n });\n var newObj = Object.create({}, props);\n return result && newObj.hasOwnProperty(\"prop15_2_3_5_4_14\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty) && fnExists(Array.prototype.forEach) && fnExists(Object.getOwnPropertyNames))"
+ },
+ {
+ "id": "15.2.3.5-4-140",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-140.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is a Boolean object (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: new Boolean(true)\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-141",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-141.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is a Number object (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: new Number(123)\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-142",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-142.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is the Math object (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: Math\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-143",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-143.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is a Date object (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: new Date()\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-144",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-144.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is a RegExp object (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: new RegExp()\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-145",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-145.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is the JSON object (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: JSON\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-146",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-146.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is an Error object (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: new Error()\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-147",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-147.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is an Arguments object (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var argObj = (function () { return arguments; })();\n\n var newObj = Object.create({}, {\n prop: {\n configurable: argObj\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-149",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-149.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is the global object (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: fnGlobalObject()\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-15",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-15.js",
+ "description": "Object.create - argument 'Properties' is the Aguments object (15.2.3.7 step 2)",
+ "test": "assertTrue((function testcase() {\n\n var result = false;\n\n var argObj = (function () { return arguments; })();\n\n Object.defineProperty(argObj, \"prop\", {\n get: function () {\n result = ('[object Arguments]' === Object.prototype.toString.call(this));\n return {};\n },\n enumerable: true\n });\n\n var newObj = Object.create({}, argObj);\n return result && newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-150",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-150.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is a string (value is 'false') which is treated as the value true (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: \"false\"\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-151",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-151.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is new Boolean(false) which is treated as the value true (8.10.5 step 4.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: new Boolean(false)\n }\n });\n\n var beforeDeleted = newObj.hasOwnProperty(\"prop\");\n\n delete newObj.prop;\n\n var afterDeleted = newObj.hasOwnProperty(\"prop\");\n\n return beforeDeleted === true && afterDeleted === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-152",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-152.js",
+ "description": "Object.create - 'value' property of one property in 'Properties' is present (8.10.5 step 5)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n value: 100\n }\n });\n\n return newObj.prop === 100;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-153",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-153.js",
+ "description": "Object.create - 'value' property of one property in 'Properties' is not present (8.10.5 step 5)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {}\n });\n\n return newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-154",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-154.js",
+ "description": "Object.create - 'value' property of one property in 'Properties' is own data property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n value: \"ownDataProperty\"\n }\n });\n\n return newObj.prop === \"ownDataProperty\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-155",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-155.js",
+ "description": "Object.create - 'value' property of one property in 'Properties' is an inherited data property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {\n value: \"inheritedDataProperty\"\n };\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var descObj = new ConstructFun();\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n return newObj.prop === \"inheritedDataProperty\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-156",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-156.js",
+ "description": "Object.create - 'value' property of one property in 'Properties' is own data property that overrides an inherited data property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {\n value: \"inheritedDataProperty\"\n };\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var descObj = new ConstructFun();\n\n descObj.value = \"ownDataProperty\";\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n return newObj.prop === \"ownDataProperty\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-157",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-157.js",
+ "description": "Object.create - 'value' property of one property in 'Properties' is own data property that overrides an inherited accessor property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n\n Object.defineProperty(proto, \"value\", {\n get: function () {\n return \"inheritedAccessorProperty\";\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"value\", {\n get: function () {\n return \"ownDataProperty\";\n }\n });\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n return newObj.prop === \"ownDataProperty\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-158",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-158.js",
+ "description": "Object.create - 'value' property of one property in 'Properties' is own accessor property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var descObj = {};\n\n Object.defineProperty(descObj, \"value\", {\n get: function () {\n return \"ownAccessorProperty\";\n }\n });\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n return newObj.prop === \"ownAccessorProperty\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-159",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-159.js",
+ "description": "Object.create - 'value' property of one property in 'Properties' is an inherited accessor property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n\n Object.defineProperty(proto, \"value\", {\n get: function () {\n return \"inheritedAccessorProperty\";\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var descObj = new ConstructFun();\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n return newObj.prop === \"inheritedAccessorProperty\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-16",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-16.js",
+ "description": "Object.create - own enumerable data property in 'Properties' is defined in 'obj' (15.2.3.7 step 3)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {} \n });\n return newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-160",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-160.js",
+ "description": "Object.create - 'value' property of one property in 'Properties' is own accessor property that overrides an inherited data property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {\n value: \"inheritedDataProperty\"\n };\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"value\", {\n get: function () {\n return \"ownAccessorProperty\";\n }\n });\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n return newObj.prop === \"ownAccessorProperty\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-161",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-161.js",
+ "description": "Object.create - 'value' property of one property in 'Properties' is own accessor property that overrides an inherited accessor property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n\n Object.defineProperty(proto, \"value\", {\n get: function () {\n return \"inheritedAccessorProperty\";\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"value\", {\n get: function () {\n return \"ownAccessorProperty\";\n }\n });\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n return newObj.prop === \"ownAccessorProperty\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-162",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-162.js",
+ "description": "Object.create - 'value' property of one property in 'Properties' is own accessor property without a get function (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var descObj = {};\n\n Object.defineProperty(descObj, \"value\", {\n set: function () { }\n });\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n return newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-163",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-163.js",
+ "description": "Object.create - 'value' property of one property in 'Properties' is own accessor property without a get function, which overrides an inherited accessor property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n\n Object.defineProperty(proto, \"value\", {\n get: function () {\n return \"inheritedAccessorProperty\";\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"value\", {\n set: function () { }\n });\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n return newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-164",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-164.js",
+ "description": "Object.create - 'value' property of one property in 'Properties' is an inherited accessor property without a get function (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n\n Object.defineProperty(proto, \"value\", {\n set: function () { }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var descObj = new ConstructFun();\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n return newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-165",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-165.js",
+ "description": "Object.create - one property in 'Properties' is a Function object which implements its own [[Get]] method to access the 'value' property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var Func = function (a, b) {\n return a + b;\n };\n\n var fun = new Func();\n fun.value = \"FunValue\";\n\n var newObj = Object.create({}, {\n prop: fun\n });\n return newObj.prop === \"FunValue\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-166",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-166.js",
+ "description": "Object.create - one property in 'Properties' is an Array object that uses Object's [[Get]] method to access the 'value' property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var arr = [1, 2, 3];\n\n arr.value = \"ArrValue\";\n\n var newObj = Object.create({}, {\n prop: arr\n });\n\n return newObj.prop === \"ArrValue\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-167",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-167.js",
+ "description": "Object.create - one property in 'Properties' is a String object that uses Object's [[Get]] method to access the 'value' property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var str = new String(\"abc\");\n\n str.value = \"StrValue\";\n\n var newObj = Object.create({}, {\n prop: str\n });\n\n return newObj.prop === \"StrValue\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-168",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-168.js",
+ "description": "Object.create - one property in 'Properties' is a Boolean object that uses Object's [[Get]] method to access the 'value' property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var booleanObj = new Boolean(false);\n\n booleanObj.value = \"BooleanValue\";\n\n var newObj = Object.create({}, {\n prop: booleanObj\n });\n\n return newObj.prop === \"BooleanValue\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-169",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-169.js",
+ "description": "Object.create - one property in 'Properties' is a Number object that uses Object's [[Get]] method to access the 'value' property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var numObj = new Number(123);\n\n numObj.value = \"NumValue\";\n\n var newObj = Object.create({}, {\n prop: numObj\n });\n\n return newObj.prop === \"NumValue\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-17",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-17.js",
+ "description": "Object.create - own data property in 'Properties' which is not enumerable is not defined in 'obj' (15.2.3.7 step 3)",
+ "test": "assertTrue((function testcase() {\n\n var props = {};\n Object.defineProperty(props, \"prop\", {\n value: {},\n enumerable: false\n });\n var newObj = Object.create({}, props);\n\n return !newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-170",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-170.js",
+ "description": "Object.create - one property in 'Properties' is the Math object that uses Object's [[Get]] method to access the 'value' property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Math.value = \"MathValue\";\n\n var newObj = Object.create({}, {\n prop: Math\n });\n\n return newObj.prop === \"MathValue\";\n } finally {\n delete Math.value;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-171",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-171.js",
+ "description": "Object.create - one property in 'Properties' is a Date object that uses Object's [[Get]] method to access the 'value' property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var dateObj = new Date();\n\n dateObj.value = \"DateValue\";\n\n var newObj = Object.create({}, {\n prop: dateObj\n });\n\n return newObj.prop === \"DateValue\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-172",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-172.js",
+ "description": "Object.create - one property in 'Properties' is a RegExp object that uses Object's [[Get]] method to access the 'value' property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var regObj = new RegExp();\n\n regObj.value = \"RegExpValue\";\n\n var newObj = Object.create({}, {\n prop: regObj\n });\n\n return newObj.prop === \"RegExpValue\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-173",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-173.js",
+ "description": "Object.create - one property in 'Properties' is the JSON object that uses Object's [[Get]] method to access the 'value' property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n try {\n JSON.value = \"JSONValue\";\n\n var newObj = Object.create({}, {\n prop: JSON\n });\n\n return newObj.prop === \"JSONValue\";\n } finally {\n delete JSON.value;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-174",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-174.js",
+ "description": "Object.create - one property in 'Properties' is an Error object that uses Object's [[Get]] method to access the 'value' property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var errorObj = new Error();\n\n errorObj.value = \"ErrorValue\";\n\n var newObj = Object.create({}, {\n prop: errorObj\n });\n\n return newObj.prop === \"ErrorValue\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-175",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-175.js",
+ "description": "Object.create - one property in 'Properties' is an Arguments object which implements its own [[Get]] method to access the 'value' property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var argObj = (function () { return arguments; })();\n\n argObj.value = \"ArgValue\";\n\n var newObj = Object.create({}, {\n prop: argObj\n });\n\n return newObj.prop === \"ArgValue\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-177",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-177.js",
+ "description": "Object.create - one property in 'Properties' is the global object that uses Object's [[Get]] method to access the 'value' property (8.10.5 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n try {\n fnGlobalObject().value = \"GlobalValue\";\n\n var newObj = Object.create({}, {\n prop: fnGlobalObject()\n });\n\n return newObj.prop === \"GlobalValue\";\n } finally {\n delete fnGlobalObject().value;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-178",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-178.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is true (8.10.5 step 6)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: true\n }\n });\n\n var beforeWrite = ((newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\"));\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-179",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-179.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is not present (8.10.5 step 6)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n value: 100\n }\n });\n\n var beforeWrite = (newObj.prop === 100);\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === 100);\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-18",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-18.js",
+ "description": "Object.create - an enumerable inherited data property in 'Properties' is not defined in 'obj' (15.2.3.7 step 3)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n\n proto.prop = {};\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var child = new ConstructFun();\n\n var newObj = Object.create({}, child);\n\n return !newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-180",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-180.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is own data property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: true\n }\n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-181",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-181.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is an inherited data property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {\n writable: true\n };\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var descObj = new ConstructFun();\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-182",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-182.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is own data property that overrides an inherited data property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {\n writable: false\n };\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var descObj = new ConstructFun();\n\n descObj.writable = true;\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-183",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-183.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is own data property that overrides an inherited accessor property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n\n Object.defineProperty(proto, \"writable\", {\n get: function () {\n return false;\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"writable\", {\n value: true\n });\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-184",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-184.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is own accessor property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var descObj = {};\n\n Object.defineProperty(descObj, \"writable\", {\n get: function () {\n return true;\n }\n });\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-185",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-185.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is an inherited accessor property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n\n Object.defineProperty(proto, \"writable\", {\n get: function () {\n return true;\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var descObj = new ConstructFun();\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-186",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-186.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is own accessor property that overrides an inherited data property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {\n writable: false\n };\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"writable\", {\n get: function () {\n return true;\n }\n });\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-187",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-187.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is own accessor property that overrides an inherited accessor property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n\n Object.defineProperty(proto, \"writable\", {\n get: function () {\n return false;\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"writable\", {\n get: function () {\n return true;\n }\n });\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-188",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-188.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is own accessor property without a get function (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var descObj = { value: 100 };\n\n Object.defineProperty(descObj, \"writable\", {\n set: function () { }\n });\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n var beforeWrite = (newObj.prop === 100);\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === 100);\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-189",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-189.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is own accessor property without a get function, which overrides an inherited accessor property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n\n Object.defineProperty(proto, \"writable\", {\n get: function () {\n return true;\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"writable\", {\n set: function () { }\n });\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-19",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-19.js",
+ "description": "Object.create - own enumerable accessor property in 'Properties' is defined in 'obj' (15.2.3.7 step 3)",
+ "test": "assertTrue((function testcase() {\n\n var props = {};\n\n Object.defineProperty(props, \"prop\", {\n get: function () {\n return {};\n },\n enumerable: true\n });\n\n var newObj = Object.create({}, props);\n\n return newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-190",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-190.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is an inherited accessor property without a get function (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = { value: 100 };\n\n Object.defineProperty(proto, \"writable\", {\n set: function () { }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var descObj = new ConstructFun();\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n var beforeWrite = (newObj.prop === 100);\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === 100);\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-191",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-191.js",
+ "description": "Object.create - one property in 'Properties' is a Function object which implements its own [[Get]] method to access the 'writable' property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var Func = function (a, b) {\n return a + b;\n };\n\n var fun = new Func();\n fun.writable = true;\n\n var newObj = Object.create({}, {\n prop: fun\n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-192",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-192.js",
+ "description": "Object.create - one property in 'Properties' is an Array object that uses Object's [[Get]] method to access the 'writable' property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var array = [1, 2, 3];\n\n array.writable = true;\n\n var newObj = Object.create({}, {\n prop: array\n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-193",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-193.js",
+ "description": "Object.create - one property in 'Properties' is a String object that uses Object's [[Get]] method to access the 'writable' property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var str = new String(\"abc\");\n\n str.writable = true;\n\n var newObj = Object.create({}, {\n prop: str\n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-194",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-194.js",
+ "description": "Object.create - one property in 'Properties' is a Boolean object that uses Object's [[Get]] method to access the 'writable' property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var booleanObj = new Boolean(false);\n\n booleanObj.writable = true;\n\n var newObj = Object.create({}, {\n prop: booleanObj\n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-195",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-195.js",
+ "description": "Object.create - one property in 'Properties' is a Number object that uses Object's [[Get]] method to access the 'writable' property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var numObj = new Number(123);\n\n numObj.writable = true;\n\n var newObj = Object.create({}, {\n prop: numObj\n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-196",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-196.js",
+ "description": "Object.create - one property in 'Properties' is the Math object that uses Object's [[Get]] method to access the 'writable' property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Math.writable = true;\n\n var newObj = Object.create({}, {\n prop: Math\n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n } finally {\n delete Math.writable;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-197",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-197.js",
+ "description": "Object.create - one property in 'Properties' is a Date object that uses Object's [[Get]] method to access the 'writable' property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var dateObj = new Date();\n\n dateObj.writable = true;\n\n var newObj = Object.create({}, {\n prop: dateObj\n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-198",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-198.js",
+ "description": "Object.create - one property in 'Properties' is a RegExp object that uses Object's [[Get]] method to access the 'writable' property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var regObj = new RegExp();\n\n regObj.writable = true;\n\n var newObj = Object.create({}, {\n prop: regObj\n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-199",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-199.js",
+ "description": "Object.create - one property in 'Properties' is the JSON object that uses Object's [[Get]] method to access the 'writable' property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n try {\n JSON.writable = true;\n\n var newObj = Object.create({}, {\n prop: JSON \n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n } finally {\n delete JSON.writable;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-2",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-2.js",
+ "description": "Object.create - 'Properties' is undefined",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, undefined);\n return (newObj instanceof Object);\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-20",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-20.js",
+ "description": "Object.create - own accessor property in 'Properties' which is not enumerable is not defined in 'obj' (15.2.3.7 step 3)",
+ "test": "assertTrue((function testcase() {\n\n var props = {};\n\n Object.defineProperty(props, \"prop\", {\n get: function () {\n return {};\n },\n enumerable: false\n });\n\n var newObj = Object.create({}, props);\n\n return !newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-200",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-200.js",
+ "description": "Object.create - one property in 'Properties' is an Error object that uses Object's [[Get]] method to access the 'writable' property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var errorObj = new Error();\n\n errorObj.writable = true;\n\n var newObj = Object.create({}, {\n prop: errorObj\n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-201",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-201.js",
+ "description": "Object.create - one property in 'Properties' is an Arguments object which implements its own [[Get]] method to access the 'writable' property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n var argObj = (function () { return arguments; })();\n\n argObj.writable = true;\n\n var newObj = Object.create({}, {\n prop: argObj\n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-203",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-203.js",
+ "description": "Object.create - one property in 'Properties' is the global object that uses Object's [[Get]] method to access the 'writable' property (8.10.5 step 6.a)",
+ "test": "assertTrue((function testcase() {\n\n try {\n fnGlobalObject().writable = true;\n\n var newObj = Object.create({}, {\n prop: fnGlobalObject() \n });\n\n var beforeWrite = (newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\");\n\n newObj.prop = \"isWritable\";\n\n var afterWrite = (newObj.prop === \"isWritable\");\n\n return beforeWrite === true && afterWrite === true;\n } finally {\n delete fnGlobalObject().writable;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-204",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-204.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is undefined (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n var newObj = Object.create({}, {\n prop: {\n writable: undefined\n }\n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\") && typeof newObj.prop === \"undefined\";\n\n newObj.prop = 121;\n\n return hasProperty && typeof newObj.prop === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-205",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-205.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is null (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: null\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\") && typeof newObj.prop === \"undefined\";\n\n newObj.prop = 121;\n\n return hasProperty && typeof newObj.prop === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-206",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-206.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is true (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: true\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = 121;\n\n return hasProperty && newObj.prop === 121;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-207",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-207.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is false (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: false\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\") && typeof newObj.prop === \"undefined\";\n\n newObj.prop = 121;\n\n return hasProperty && typeof newObj.prop === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-208",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-208.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is 0 (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: 0\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\") && typeof newObj.prop === \"undefined\";\n\n newObj.prop = 121;\n\n return hasProperty && typeof newObj.prop === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-209",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-209.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is +0 (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: +0\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\") && typeof newObj.prop === \"undefined\";\n\n newObj.prop = 121;\n\n return hasProperty && typeof newObj.prop === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-21",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-21.js",
+ "description": "Object.create - an enumerable inherited accessor property in 'Properties' is not defined in 'obj' (15.2.3.7 step 3)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n\n Object.defineProperty(proto, \"prop\", {\n get: function () {\n return {};\n },\n enumerable: true\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var child = new ConstructFun();\n\n var newObj = Object.create({}, child);\n\n return !newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-210",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-210.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is -0 (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: -0\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\") && typeof newObj.prop === \"undefined\";\n\n newObj.prop = 121;\n\n return hasProperty && typeof newObj.prop === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-211",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-211.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is NaN (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: NaN\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\") && typeof newObj.prop === \"undefined\";\n\n newObj.prop = 121;\n\n return hasProperty && typeof newObj.prop === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-212",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-212.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is a positive number primitive (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: 12\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = 121;\n\n return hasProperty && newObj.prop === 121;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-213",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-213.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is a negative number primitive (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: -9\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = 121;\n\n return hasProperty && newObj.prop === 121;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-214",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-214.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is an empty string (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n var descObj = {\n writable: \"\"\n };\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\") && typeof newObj.prop === \"undefined\";\n\n newObj.prop = 121;\n\n return hasProperty && typeof newObj.prop === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-215",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-215.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is a non-empty string (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: \"abc\"\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = 121;\n\n return hasProperty && newObj.prop === 121;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-216",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-216.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is a Function object (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: function () { }\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = 121;\n\n return hasProperty && newObj.prop === 121;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-217",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-217.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is an Array object (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: []\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = 121;\n\n return hasProperty && newObj.prop === 121;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-218",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-218.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is a String object (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: new String()\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = 121;\n\n return hasProperty && newObj.prop === 121;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-219",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-219.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is a Boolean object (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: new Boolean()\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = 121;\n\n return hasProperty && newObj.prop === 121;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-22",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-22.js",
+ "description": "Object.create - own enumerable data property that overrides an enumerable inherited data property in 'Properties' is defined in 'obj' (15.2.3.7 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n proto.prop = {\n value: \"abc\"\n };\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var child = new ConstructFun();\n child.prop = {\n value: \"bbq\"\n };\n var newObj = Object.create({}, child);\n\n return newObj.hasOwnProperty(\"prop\") && newObj.prop === \"bbq\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-220",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-220.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is a Number object (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: new Number()\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = 121;\n\n return hasProperty && newObj.prop === 121;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-221",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-221.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is the Math object (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: Math\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = 121;\n\n return hasProperty && newObj.prop === 121;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-222",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-222.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is a Date object (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: new Date()\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = 121;\n\n return hasProperty && newObj.prop === 121;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-223",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-223.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is a RegExp object (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: new RegExp()\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = 121;\n\n return hasProperty && newObj.prop === 121;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-224",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-224.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is the JSON object (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: JSON\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n newObj.prop = 121;\n return hasProperty && newObj.prop === 121;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-225",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-225.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is an Error object (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: new Error()\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n newObj.prop = 121;\n return hasProperty && newObj.prop === 121;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-226",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-226.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is an Arguments object (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var argObj = (function () { return arguments; })();\n\n var newObj = Object.create({}, {\n prop: {\n writable: argObj\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = 121;\n\n return hasProperty && newObj.prop === 121;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-228",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-228.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is the global object (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: fnGlobalObject()\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = 121;\n\n return hasProperty && newObj.prop === 121;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-229",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-229.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is a string (value is 'false') which is treated as the value true (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: \"false\"\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = 121;\n\n return hasProperty && newObj.prop === 121;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-23",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-23.js",
+ "description": "Object.create - own enumerable data property that overrides an enumerable inherited accessor property in 'Properties' is defined in 'obj' (15.2.3.7 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n Object.defineProperty(proto, \"prop\", {\n get: function () {\n return { value: 9 };\n },\n enumerable: true\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var child = new ConstructFun();\n Object.defineProperty(child, \"prop\", {\n value: {\n value: 12\n },\n enumerable: true\n });\n var newObj = Object.create({}, child);\n\n return newObj.hasOwnProperty(\"prop\") && newObj.prop === 12;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-230",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-230.js",
+ "description": "Object.create - 'writable' property of one property in 'Properties' is new Boolean(false) which is treated as the value true (8.10.5 step 6.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n writable: new Boolean(false)\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = 121;\n\n return hasProperty && newObj.prop === 121;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-231",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-231.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is present (8.10.5 step 7)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n get: function () {\n return \"present\";\n }\n }\n });\n return newObj.prop === \"present\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-232",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-232.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is not present (8.10.5 step 7)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {}\n });\n return typeof (newObj.prop) === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-233",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-233.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is own data property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n get: function () {\n return \"ownDataProperty\";\n }\n }\n });\n return newObj.prop === \"ownDataProperty\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-234",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-234.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is an inherited data property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {\n get: function () {\n return \"inheritedDataProperty\";\n }\n };\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var descObj = new ConstructFun();\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n return newObj.prop === \"inheritedDataProperty\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-235",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-235.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is own data property that overrides an inherited data property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {\n get: function () {\n return \"inheritedDataProperty\";\n }\n };\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"get\", {\n value: function () {\n return \"ownDataProperty\";\n }\n });\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n return newObj.prop === \"ownDataProperty\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-236",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-236.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is own data property that overrides an inherited accessor property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n\n Object.defineProperty(proto, \"get\", {\n get: function () {\n return function () {\n return \"inheritedAccessorProperty\";\n };\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"get\", {\n value: function () {\n return \"ownDataProperty\";\n }\n });\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n return newObj.prop === \"ownDataProperty\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-237",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-237.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is own accessor property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n\n var descObj = {};\n\n Object.defineProperty(descObj, \"get\", {\n get: function () {\n return function () {\n return \"ownAccessorProperty\";\n };\n }\n });\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n\n return newObj.prop === \"ownAccessorProperty\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-238",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-238.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is an inherited accessor property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n\n Object.defineProperty(proto, \"get\", {\n get: function () {\n return function () {\n return \"inheritedAccessorProperty\";\n };\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n\n return newObj.prop === \"inheritedAccessorProperty\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-239",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-239.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is own accessor property that overrides an inherited data property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n var proto = {\n get: function () {\n return \"inheritedDataProperty\";\n }\n };\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"get\", {\n get: function () {\n return function () {\n return \"ownAccessorProperty\";\n };\n }\n });\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n return newObj.prop === \"ownAccessorProperty\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-24",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-24.js",
+ "description": "Object.create - own enumerable accessor property that overrides an enumerable inherited data property in 'Properties' is defined in 'obj' (15.2.3.7 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n proto.prop = {\n value: 12\n };\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var child = new ConstructFun();\n Object.defineProperty(child, \"prop\", {\n get: function () {\n return {\n value: 9\n };\n },\n enumerable: true\n });\n\n var newObj = Object.create({}, child);\n\n return newObj.hasOwnProperty(\"prop\") && newObj.prop === 9;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-240",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-240.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is own accessor property that overrides an inherited accessor property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n var proto = {};\n\n Object.defineProperty(proto, \"get\", {\n get: function () {\n return function () {\n return \"inheritedAccessorProperty\";\n };\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"get\", {\n get: function () {\n return function () {\n return \"ownAccessorProperty\";\n };\n }\n });\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n\n return newObj.prop === \"ownAccessorProperty\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-241",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-241.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is own accessor property without a get function (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n var descObj = {};\n\n Object.defineProperty(descObj, \"get\", {\n set: function () { }\n });\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n\n return newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-242",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-242.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is own accessor property without a get function, which overrides an inherited accessor property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n var proto = {};\n\n Object.defineProperty(proto, \"get\", {\n get: function () {\n return function () {\n return \"inheritedAccessorProperty\";\n };\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"get\", {\n set: function () { }\n });\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n\n return newObj.hasOwnProperty(\"prop\") && typeof newObj.prop === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-243",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-243.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is an inherited accessor property without a get function (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n var proto = {};\n\n Object.defineProperty(proto, \"get\", {\n set: function () { }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n\n return newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-244",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-244.js",
+ "description": "Object.create - one property in 'Properties' is a Function object which implements its own [[Get]] method to access the 'get' property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n var funObj = function () {};\n\n funObj.get = function () {\n return \"VerifyFunctionObject\";\n };\n\n var newObj = Object.create({}, {\n prop: funObj\n });\n\n return newObj.prop === \"VerifyFunctionObject\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-245",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-245.js",
+ "description": "Object.create - one property in 'Properties' is an Array object that uses Object's [[Get]] method to access the 'get' property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n var arrayObj = [1, 2, 3];\n\n arrayObj.get = function () {\n return \"VerifyArrayObject\";\n };\n\n var newObj = Object.create({}, {\n prop: arrayObj\n });\n\n return newObj.prop === \"VerifyArrayObject\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-246",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-246.js",
+ "description": "Object.create - one property in 'Properties' is a String object that uses Object's [[Get]] method to access the 'get' property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n var strObj = new String(\"abc\");\n\n strObj.get = function () {\n return \"VerifyStringObject\";\n };\n\n var newObj = Object.create({}, {\n prop: strObj\n });\n\n return newObj.prop === \"VerifyStringObject\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-247",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-247.js",
+ "description": "Object.create - one property in 'Properties' is a Boolean object that uses Object's [[Get]] method to access the 'get' property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n var boolObj = new Boolean(true);\n\n boolObj.get = function () {\n return \"VerifyBooleanObject\";\n };\n\n var newObj = Object.create({}, {\n prop: boolObj \n });\n\n return newObj.prop === \"VerifyBooleanObject\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-248",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-248.js",
+ "description": "Object.create - one property in 'Properties' is a Number object that uses Object's [[Get]] method to access the 'get' property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n var numObj = new Number(5);\n\n numObj.get = function () {\n return \"VerifyNumberObject\";\n };\n\n var newObj = Object.create({}, {\n prop: numObj \n });\n\n return newObj.prop === \"VerifyNumberObject\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-249",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-249.js",
+ "description": "Object.create - one property in 'Properties' is a Date object that uses Object's [[Get]] method to access the 'get' property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n var dateObj = new Date();\n\n dateObj.get = function () {\n return \"VerifyDateObject\";\n };\n\n var newObj = Object.create({}, {\n prop: dateObj \n });\n\n return newObj.prop === \"VerifyDateObject\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-25",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-25.js",
+ "description": "Object.create - own enumerable accessor property that overrides an enumerable inherited accessor property in 'Properties' is defined in 'obj' (15.2.3.7 step 5.a) ",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n Object.defineProperty(proto, \"prop\", {\n get: function () {\n return {\n value: 9\n };\n },\n enumerable: true\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var child = new ConstructFun();\n Object.defineProperty(child, \"prop\", {\n get: function () {\n return {\n value: 12\n };\n },\n enumerable: true\n });\n var newObj = Object.create({}, child);\n\n return newObj.hasOwnProperty(\"prop\") && newObj.prop === 12;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-250",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-250.js",
+ "description": "Object.create - one property in 'Properties' is a RegExp object that uses Object's [[Get]] method to access the 'get' property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n var regObj = new RegExp();\n\n regObj.get = function () {\n return \"VerifyRegExpObject\";\n };\n\n var newObj = Object.create({}, {\n prop: regObj\n });\n\n return newObj.prop === \"VerifyRegExpObject\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-251",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-251.js",
+ "description": "Object.create - one property in 'Properties' is the Math object that uses Object's [[Get]] method to access the 'get' property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n try {\n Math.get = function () {\n return \"VerifyMathObject\";\n };\n\n var newObj = Object.create({}, {\n prop: Math \n });\n\n return newObj.prop === \"VerifyMathObject\";\n } finally {\n delete Math.get;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-252",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-252.js",
+ "description": "Object.create - one property in 'Properties' is the JSON object that uses Object's [[Get]] method to access the 'get' property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n JSON.get = function () {\n return \"VerifyJSONObject\";\n };\n\n try {\n var newObj = Object.create({}, {\n prop: JSON \n });\n\n return newObj.prop === \"VerifyJSONObject\";\n } finally {\n delete JSON.get;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-253",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-253.js",
+ "description": "Object.create - one property in 'Properties' is an Error object that uses Object's [[Get]] method to access the 'get' property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n var errObj = new Error(\"error\");\n\n errObj.get = function () {\n return \"VerifyErrorObject\";\n };\n\n var newObj = Object.create({}, {\n prop: errObj \n });\n\n return newObj.prop === \"VerifyErrorObject\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-254",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-254.js",
+ "description": "Object.create - one property in 'Properties' is an Arguments object which implements its own [[Get]] method to access the 'get' property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n\n var argObj = (function () { return arguments; })();\n\n argObj.get = function () {\n return \"VerifyArgumentsObject\";\n };\n\n var newObj = Object.create({}, {\n prop: argObj\n });\n\n return newObj.prop === \"VerifyArgumentsObject\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-256",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-256.js",
+ "description": "Object.create - one property in 'Properties' is the global object that uses Object's [[Get]] method to access the 'get' property (8.10.5 step 7.a)",
+ "test": "assertTrue((function testcase() {\n fnGlobalObject().get = function () {\n return \"VerifyGlobalObject\";\n };\n\n try {\n var newObj = Object.create({}, {\n prop: fnGlobalObject()\n });\n\n return newObj.prop === \"VerifyGlobalObject\";\n } finally {\n delete fnGlobalObject().get;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-257",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-257.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is undefined (8.10.5 step 7.b)",
+ "test": "assertTrue((function testcase() {\n var newObj = Object.create({}, {\n prop: {\n get: undefined\n }\n });\n\n return newObj.hasOwnProperty(\"prop\") && typeof newObj.prop === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-258",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-258.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is the primitive value null (8.10.5 step 7.b)",
+ "test": "assertTrue((function testcase() {\n try {\n Object.create({}, {\n prop: {\n get: null\n }\n });\n\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-259",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-259.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is a boolean primitive (8.10.5 step 7.b)",
+ "test": "assertTrue((function testcase() {\n try {\n Object.create({}, {\n prop: {\n get: false\n }\n });\n\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-26",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-26.js",
+ "description": "Object.create - TypeError is thrown when own enumerable accessor property of 'Properties' without a get function (15.2.3.7 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var props = {};\n Object.defineProperty(props, \"prop\", {\n set: function () { },\n enumerable: true\n });\n try {\n Object.create({}, props);\n\n return false;\n } catch (ex) {\n return ex instanceof TypeError;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-260",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-260.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is a number primitive (8.10.5 step 7.b)",
+ "test": "assertTrue((function testcase() {\n try {\n Object.create({}, {\n prop: {\n get: 123\n }\n });\n\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-261",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-261.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is a primitive string (8.10.5 step 7.b)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create({}, {\n prop: {\n get: \"string\"\n }\n });\n\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-262",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-262.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is an Array object (8.10.5 step 7.b)",
+ "test": "assertTrue((function testcase() {\n try {\n Object.create({}, {\n prop: {\n get: [1, 2, 3]\n }\n });\n\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-263",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-263.js",
+ "description": "Object.create - 'get' property of one property in 'Properties' is a function (8.10.5 step 7.b)",
+ "test": "assertTrue((function testcase() {\n var newObj = Object.create({}, {\n prop: {\n get: function () { }\n }\n });\n\n return newObj.hasOwnProperty(\"prop\") && typeof newObj.prop === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-266",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-266.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is present (8.10.5 step 8)",
+ "test": "assertTrue((function testcase() {\n var data = \"data\";\n\n var newObj = Object.create({}, {\n prop: {\n set: function (value) {\n data = value;\n }\n }\n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && data === \"overrideData\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-267",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-267.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is not present (8.10.5 step 8)",
+ "test": "assertTrue((function testcase() {\n var newObj = Object.create({}, {\n prop: {\n get: function () {\n return \"data\";\n }\n }\n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && newObj.prop === \"data\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-268",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-268.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is own data property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var data = \"data\";\n\n var newObj = Object.create({}, {\n prop: {\n set: function (value) {\n data = value;\n }\n }\n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && data === \"overrideData\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-269",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-269.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is an inherited data property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var data = \"data\";\n var proto = {\n set: function (value) {\n data = value;\n }\n };\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var child = new ConstructFun();\n\n var newObj = Object.create({}, {\n prop: child \n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && data === \"overrideData\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-27",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-27.js",
+ "description": "Object.create - own enumerable accessor property in 'Properties' without a get function that overrides an enumerable inherited accessor property in 'Properties' is defined in 'obj' (15.2.3.7 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n Object.defineProperty(proto, \"prop\", {\n get: function () {\n return {};\n },\n enumerable: true\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n\n var child = new ConstructFun();\n Object.defineProperty(child, \"prop\", {\n set: function () { },\n enumerable: true\n });\n\n try {\n Object.create({}, child);\n\n return false;\n } catch (ex) {\n return ex instanceof TypeError;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-270",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-270.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is own data property that overrides an inherited data property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var data1 = \"data\";\n var data2 = \"data\";\n var proto = {\n set: function (value) {\n data2 = value;\n }\n };\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var child = new ConstructFun();\n child.set = function (value) {\n data1 = value;\n };\n\n var newObj = Object.create({}, {\n prop: child \n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && data1 === \"overrideData\" && data2 === \"data\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-271",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-271.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is own data property that overrides an inherited accessor property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var data1 = \"data\";\n var data2 = \"data\";\n\n var proto = {};\n Object.defineProperty(proto, \"set\", {\n get: function () {\n return function (value) {\n data2 = value;\n };\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var child = new ConstructFun();\n Object.defineProperty(child, \"set\", {\n value: function (value) {\n data1 = value;\n }\n });\n\n var newObj = Object.create({}, {\n prop: child \n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && data1 === \"overrideData\" && data2 === \"data\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-272",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-272.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is own accessor property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var data = \"data\";\n var descObj = {};\n\n Object.defineProperty(descObj, \"set\", {\n get: function () {\n return function (value) {\n data = value;\n };\n }\n });\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && data === \"overrideData\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-273",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-273.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is an inherited accessor property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var data = \"data\";\n var proto = {};\n\n Object.defineProperty(proto, \"set\", {\n get: function () {\n return function (value) {\n data = value;\n };\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var child = new ConstructFun();\n\n var newObj = Object.create({}, {\n prop: child \n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && data === \"overrideData\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-274",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-274.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is own accessor property that overrides an inherited data property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var data1 = \"data\";\n var data2 = \"data\";\n\n var proto = {};\n proto.set = function (value) {\n data2 = value;\n };\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var child = new ConstructFun();\n Object.defineProperty(child, \"set\", {\n get: function () {\n return function (value) {\n data1 = value;\n };\n }\n });\n\n var newObj = Object.create({}, {\n prop: child \n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && data1 === \"overrideData\" && data2 === \"data\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-275",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-275.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is own accessor property that overrides an inherited accessor property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var data1 = \"data\";\n var data2 = \"data\";\n var proto = {};\n\n Object.defineProperty(proto, \"set\", {\n get: function () {\n return function (value) {\n data2 = value;\n };\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var child = new ConstructFun();\n Object.defineProperty(child, \"set\", {\n get: function () {\n return function (value) {\n data1 = value;\n };\n }\n });\n\n var newObj = Object.create({}, {\n prop: child\n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && data1 === \"overrideData\" && data2 === \"data\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-276",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-276.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is own accessor property without a get function (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var descObj = {};\n Object.defineProperty(descObj, \"set\", {\n set: function () { }\n });\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n var desc = Object.getOwnPropertyDescriptor(newObj, \"prop\");\n\n return hasProperty && typeof desc.set === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty) && fnExists(Object.getOwnPropertyDescriptor))"
+ },
+ {
+ "id": "15.2.3.5-4-277",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-277.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is own accessor property without a get function, which overrides an inherited accessor property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var proto = {};\n Object.defineProperty(proto, \"set\", {\n get: function () {\n return function () { };\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var child = new ConstructFun();\n Object.defineProperty(child, \"set\", {\n set: function () { }\n });\n\n var newObj = Object.create({}, {\n prop: child\n });\n\n var desc = Object.getOwnPropertyDescriptor(newObj, \"prop\");\n\n return newObj.hasOwnProperty(\"prop\") && typeof desc.set === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty) && fnExists(Object.getOwnPropertyDescriptor))"
+ },
+ {
+ "id": "15.2.3.5-4-278",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-278.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is an inherited accessor property without a get function (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var proto = {};\n Object.defineProperty(proto, \"set\", {\n set: function () { }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var child = new ConstructFun();\n\n var newObj = Object.create({}, {\n prop: child\n });\n\n var desc = Object.getOwnPropertyDescriptor(newObj, \"prop\");\n\n return newObj.hasOwnProperty(\"prop\") && typeof desc.set === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty) && fnExists(Object.getOwnPropertyDescriptor))"
+ },
+ {
+ "id": "15.2.3.5-4-279",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-279.js",
+ "description": "Object.create - one property in 'Properties' is a Function object which implements its own [[Get]] method to access the 'set' property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var funObj = function () { };\n var data = \"data\";\n funObj.set = function (value) {\n data = value;\n };\n\n var newObj = Object.create({}, {\n prop: funObj\n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && data === \"overrideData\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-28",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-28.js",
+ "description": "Object.create - 'Properties' is a Function object which implements its own [[Get]] method to access own enumerable property (15.2.3.7 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var props = function () { };\n props.prop = {\n value: 12,\n enumerable: true\n };\n var newObj = Object.create({}, props);\n return newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-280",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-280.js",
+ "description": "Object.create - one property in 'Properties' is an Array object that uses Object's [[Get]] method to access the 'set' property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var arrObj = [];\n var data = \"data\";\n arrObj.set = function (value) {\n data = value;\n };\n\n var newObj = Object.create({}, {\n prop: arrObj\n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && data === \"overrideData\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-281",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-281.js",
+ "description": "Object.create - one property in 'Properties' is a String object that uses Object's [[Get]] method to access the 'set' property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var strObj = new String();\n var data = \"data\";\n strObj.set = function (value) {\n data = value;\n };\n\n var newObj = Object.create({}, {\n prop: strObj\n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && data === \"overrideData\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-282",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-282.js",
+ "description": "Object.create - one property in 'Properties' is a Boolean object that uses Object's [[Get]] method to access the 'set' property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var boolObj = new Boolean(true);\n var data = \"data\";\n boolObj.set = function (value) {\n data = value;\n };\n\n var newObj = Object.create({}, {\n prop: boolObj\n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && data === \"overrideData\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-283",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-283.js",
+ "description": "Object.create - one property in 'Properties' is a Number object that uses Object's [[Get]] method to access the 'set' property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var numObj = new Number(5);\n var data = \"data\";\n numObj.set = function (value) {\n data = value;\n };\n\n var newObj = Object.create({}, {\n prop: numObj\n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && data === \"overrideData\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-284",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-284.js",
+ "description": "Object.create - one property in 'Properties' is the Math object that uses Object's [[Get]] method to access the 'set' property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var data = \"data\";\n\n try {\n Math.set = function (value) {\n data = value;\n };\n\n var newObj = Object.create({}, {\n prop: Math\n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && data === \"overrideData\";\n } finally {\n delete Math.set;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-285",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-285.js",
+ "description": "Object.create - one property in 'Properties' is a Date object that uses Object's [[Get]] method to access the 'set' property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var dateObj = new Date();\n var data = \"data\";\n dateObj.set = function (value) {\n data = value;\n };\n\n var newObj = Object.create({}, {\n prop: dateObj\n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && data === \"overrideData\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-286",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-286.js",
+ "description": "Object.create - one property in 'Properties' is a RegExp object that uses Object's [[Get]] method to access the 'set' property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var regObj = new RegExp();\n var data = \"data\";\n regObj.set = function (value) {\n data = value;\n };\n\n var newObj = Object.create({}, {\n prop: regObj\n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && data === \"overrideData\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-287",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-287.js",
+ "description": "Object.create - one property in 'Properties' is the JSON object that uses Object's [[Get]] method to access the 'set' property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var data = \"data\";\n\n try {\n JSON.set = function (value) {\n data = value;\n };\n\n var newObj = Object.create({}, {\n prop: JSON\n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && data === \"overrideData\";\n } finally {\n delete JSON.set;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-288",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-288.js",
+ "description": "Object.create - one property in 'Properties' is an Error object that uses Object's [[Get]] method to access the 'set' property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var errObj = new Error(\"error\");\n var data = \"data\";\n\n errObj.set = function (value) {\n data = value;\n };\n\n var newObj = Object.create({}, {\n prop: errObj\n });\n\n newObj.prop = \"overrideData\";\n\n return newObj.hasOwnProperty(\"prop\") && data === \"overrideData\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-289",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-289.js",
+ "description": "Object.create - one property in 'Properties' is an Arguments object which implements its own [[Get]] method to access the 'set' property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var argObj = (function () { return arguments; })();\n\n var data = \"data\";\n\n argObj.set = function (value) {\n data = value;\n };\n\n var newobj = Object.create({}, {\n prop: argObj\n });\n\n var hasProperty = newobj.hasOwnProperty(\"prop\");\n\n newobj.prop = \"overrideData\";\n\n return hasProperty && data === \"overrideData\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-29",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-29.js",
+ "description": "Object.create - 'Properties' is an Array object that uses Object's [[Get]] method to access own enumerable property (15.2.3.7 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var props = [];\n props.prop = {\n value: {},\n enumerable: true\n };\n var newObj = Object.create({}, props);\n return newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-291",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-291.js",
+ "description": "Object.create - one property in 'Properties' is the global object that uses Object's [[Get]] method to access the 'set' property (8.10.5 step 8.a)",
+ "test": "assertTrue((function testcase() {\n var data = \"data\";\n\n try {\n fnGlobalObject().set = function (value) {\n data = value;\n };\n\n var newObj = Object.create({}, {\n prop: fnGlobalObject()\n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = \"overrideData\";\n\n return hasProperty && data === \"overrideData\";\n } finally {\n delete fnGlobalObject().set;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-292",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-292.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is undefined (8.10.5 step 8.b)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n set: undefined\n }\n });\n\n newObj.prop = \"overrideData\";\n\n return newObj.hasOwnProperty(\"prop\") && typeof (newObj.prop) === \"undefined\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-293",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-293.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is a primitive value null (8.10.5 step 8.b)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create({}, {\n prop: {\n set: null\n }\n });\n\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-294",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-294.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is a primitive boolean value true (8.10.5 step 8.b)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create({}, {\n prop: {\n set: true\n } \n });\n\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-295",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-295.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is a primitive number value (8.10.5 step 8.b)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create({}, {\n prop: {\n set: 123\n }\n });\n\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-296",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-296.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is a primitive string value (8.10.5 step 8.b)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create({}, {\n prop: {\n set: \"abc\"\n }\n });\n\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-297",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-297.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is an Date object (8.10.5 step 8.b)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create({}, {\n prop: {\n set: new Date()\n }\n });\n\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-298",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-298.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is a function (8.10.5 step 8.b)",
+ "test": "assertTrue((function testcase() {\n var data = \"data\";\n\n var newObj = Object.create({}, {\n prop: {\n set: function (value) {\n data = value;\n }\n }\n });\n\n newObj.prop = \"overrideData\";\n\n return newObj.hasOwnProperty(\"prop\") && data === \"overrideData\";\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-3",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-3.js",
+ "description": "Object.create throws TypeError if 'Properties' is null (15.2.3.7 step 2)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create({}, null);\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-30",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-30.js",
+ "description": "Object.create - 'Properties' is a String object that uses Object's [[Get]] method to access own enumerable property (15.2.3.7 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var props = new String();\n props.prop = {\n value: 12,\n enumerable: true\n };\n var newObj = Object.create({}, props);\n\n return newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-300",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-300.js",
+ "description": "Object.create - 'set' property of one property in 'Properties' is a host object that isn't callable (8.10.5 step 8.b)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create({}, {\n prop: {\n set: fnGlobalObject()\n }\n });\n\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-301",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-301.js",
+ "description": "Object.create - TypeError is thrown if both 'set' property and 'value' property of one property in 'Properties' are present (8.10.5 step 9.a)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create({}, {\n prop: {\n set: function () { },\n value: 100\n }\n });\n\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-302",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-302.js",
+ "description": "Object.create - TypeError is thrown if both 'set' property and 'writable' property of one property in 'Properties' are present (8.10.5 step 9.a)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create({}, {\n prop: {\n set: function () { },\n writable: true\n }\n });\n\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-303",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-303.js",
+ "description": "Object.create - TypeError is thrown if both 'get' property and 'value' property of one property in 'Properties' are present (8.10.5 step 9.a)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create({}, {\n prop: {\n get: function () { },\n value: 100\n }\n });\n\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-304",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-304.js",
+ "description": "Object.create - TypeError is thrown if both 'get' property and 'writable' property of one property in 'Properties' are present (8.10.5 step 9.a)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create({}, {\n prop: {\n get: function () { },\n writable: true\n }\n });\n\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-305",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-305.js",
+ "description": "Object.create defines a data property when one property in 'Properties' is generic descriptor (8.12.9 step 4.a)",
+ "test": "assertTrue((function testcase() {\n\n try {\n var newObj = Object.create({}, {\n prop: {\n enumerable: true\n }\n });\n return newObj.hasOwnProperty(\"prop\");\n } catch (e) {\n return false;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-306",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-306.js",
+ "description": "Object.create - [[Value]] is set as undefined if it is absent in data descriptor of one property in 'Properties' (8.12.9 step 4.a.i)",
+ "test": "assertTrue((function testcase() {\n\n try {\n var newObj = Object.create({}, {\n prop: {\n writable: true,\n configurable: true,\n enumerable: true\n }\n });\n return newObj.hasOwnProperty(\"prop\") && newObj.prop === undefined;\n } catch (e) {\n return false;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-307",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-307.js",
+ "description": "Object.create - [[Writable]] is set as false if it is absent in data descriptor of one property in 'Properties' (8.12.9 step 4.a.i)",
+ "test": "assertTrue((function testcase() {\n var newObj = Object.create({}, {\n prop: {\n value: 1001,\n configurable: true,\n enumerable: true\n }\n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n newObj.prop = 12;\n\n return hasProperty && newObj.prop === 1001;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-308",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-308.js",
+ "description": "Object.create - [[Enumerable]] is set as false if it is absent in data descriptor of one property in 'Properties' (8.12.9 step 4.a.i)",
+ "test": "assertTrue((function testcase() {\n var isEnumerable = false;\n\n var newObj = Object.create({}, {\n prop: {\n value: 1001,\n writable: true,\n configurable: true\n }\n });\n\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n\n for (var p in newObj) {\n if (p === \"prop\") {\n isEnumerable = true;\n }\n }\n return hasProperty && !isEnumerable;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-309",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-309.js",
+ "description": "Object.create - [[Configurable]] is set as false if it is absent in data descriptor of one property in 'Properties' (8.12.9 step 4.a.i)",
+ "test": "assertTrue((function testcase() {\n var isNotConfigurable = false;\n\n try {\n var newObj = Object.create({}, {\n prop: {\n value: 1001,\n writable: true,\n enumerable: true\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n isNotConfigurable = newObj.hasOwnProperty(\"prop\");\n return hasProperty && isNotConfigurable;\n } catch (e) {\n return false;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-31",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-31.js",
+ "description": "Object.create - 'Properties' is a Boolean object that uses Object's [[Get]] method to access own enumerable property (15.2.3.7 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var props = new Boolean(false);\n props.prop = {\n value: 12,\n enumerable: true\n };\n var newObj = Object.create({}, props);\n return newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-310",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-310.js",
+ "description": "Object.create - [[Get]] is set as undefined if it is absent in accessor descriptor of one property in 'Properties' (8.12.9 step 4.b)",
+ "test": "assertTrue((function testcase() {\n var newObj = Object.create({}, {\n prop: {\n set: function () { },\n enumerable: true,\n configurable: true\n }\n });\n return newObj.hasOwnProperty(\"prop\") && newObj.prop === undefined;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-311",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-311.js",
+ "description": "Object.create - [[Set]] is set as undefined if it is absent in accessor descriptor of one property in 'Properties' (8.12.9 step 4.b)",
+ "test": "assertTrue((function testcase() {\n var newObj = Object.create({}, {\n prop: {\n get: function () {\n return \"verifyCreate\";\n },\n enumerable: true,\n configurable: true\n }\n });\n\n var desc = Object.getOwnPropertyDescriptor(newObj, \"prop\");\n var verifySet = desc.hasOwnProperty(\"set\") && typeof desc.set === \"undefined\";\n\n var verifyGet = false;\n if (newObj.prop === \"verifyCreate\") {\n verifyGet = true;\n }\n\n var verifyEnumerable = false;\n for (var p in newObj) {\n if (p === \"prop\") {\n verifyEnumerable = true;\n }\n }\n\n var verifyConfigurable = false;\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n verifyConfigurable = !newObj.hasOwnProperty(\"prop\") && hasProperty;\n\n return verifySet && verifyGet && verifyEnumerable && verifyConfigurable;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-312",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-312.js",
+ "description": "Object.create - [[Enumerable]] is set as false if it is absent in accessor descriptor of one property in 'Properties' (8.12.9 step 4.b)",
+ "test": "assertTrue((function testcase() {\n var isEnumerable = false;\n var newObj = Object.create({}, {\n prop: {\n set: function () { },\n get: function () { },\n configurable: true\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n for (var p in newObj) {\n if (p === \"prop\") {\n isEnumerable = true;\n }\n }\n return hasProperty && !isEnumerable;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-313",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-313.js",
+ "description": "Object.create - [[Configurable]] is set as false if it is absent in accessor descriptor of one property in 'Properties' (8.12.9 step 4.b)",
+ "test": "assertTrue((function testcase() { \n var newObj = Object.create({}, {\n prop: {\n set: function () { },\n get: function () { },\n enumerable: true\n }\n });\n var hasProperty = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var isNotConfigurable = newObj.hasOwnProperty(\"prop\");\n return hasProperty && isNotConfigurable;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-314",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-314.js",
+ "description": "Object.create - some enumerable own property in 'Properties' is empty object (15.2.3.7 step 7)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n foo: {}\n });\n return newObj.hasOwnProperty(\"foo\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-315",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-315.js",
+ "description": "Object.create - all properties in 'Properties' are enumerable (data property and accessor property) (15.2.3.7 step 7)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = {};\n function getFunc() {\n return 10;\n }\n function setFunc(value) {\n newObj.setVerifyHelpProp = value;\n }\n\n newObj = Object.create({}, {\n foo1: {\n value: 200,\n enumerable: true,\n writable: true,\n configurable: true\n },\n foo2: {\n get: getFunc,\n set: setFunc,\n enumerable: true,\n configurable: true\n }\n });\n return dataPropertyAttributesAreCorrect(newObj, \"foo1\", 200, true, true, true) &&\n accessorPropertyAttributesAreCorrect(newObj, \"foo2\", getFunc, setFunc, \"setVerifyHelpProp\", true, true);\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-316",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-316.js",
+ "description": "Object.create - enumerable properties of 'Properties' are given numerical names (15.2.3.7 step 7)",
+ "test": "assertTrue((function testcase() {\n\n function getFunc() {\n return 20;\n }\n function setFunc() { }\n\n var newObj = Object.create({}, {\n 0: {\n value: 100,\n enumerable: true,\n writable: true,\n configurable: true\n },\n 1: {\n get: getFunc,\n set: setFunc,\n enumerable: true,\n configurable: true\n },\n 2: {\n value: 200,\n enumerable: true,\n writable: true,\n configurable: true\n }\n });\n return newObj[0] === 100 && newObj[1] === 20 && newObj[2] === 200;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-32",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-32.js",
+ "description": "Object.create - 'Properties' is a Number object that uses Object's [[Get]] method to access own enumerable property (15.2.3.7 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var props = new Number(-9);\n props.prop = {\n value: 12,\n enumerable: true\n };\n var newObj = Object.create({}, props);\n return newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-33",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-33.js",
+ "description": "Object.create - 'Properties' is the Math object that uses Object's [[Get]] method to access own enumerable property (15.2.3.7 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Math.prop = {\n value: 12,\n enumerable: true\n };\n var newObj = Object.create({}, Math);\n return newObj.hasOwnProperty(\"prop\");\n } finally {\n delete Math.prop;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-34",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-34.js",
+ "description": "Object.create - 'Properties' is a Date object that uses Object's [[Get]] method to access own enumerable property (15.2.3.7 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var props = new Date();\n props.prop = {\n value: 12,\n enumerable: true\n };\n var newObj = Object.create({}, props);\n return newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-35",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-35.js",
+ "description": "Object.create - 'Properties' is a RegExp object that uses Object's [[Get]] method to access own enumerable property (15.2.3.7 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var props = new RegExp();\n props.prop = {\n value: 12,\n enumerable: true\n };\n var newObj = Object.create({}, props);\n return newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-36",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-36.js",
+ "description": "Object.create - 'Properties' is the JSON object that uses Object's [[Get]] method to access own enumerable property (15.2.3.7 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n try {\n JSON.prop = {\n value: 12,\n enumerable: true\n };\n var newObj = Object.create({}, JSON);\n return newObj.hasOwnProperty(\"prop\");\n } finally {\n delete JSON.prop;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-37",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-37.js",
+ "description": "Object.create - 'Properties' is an Error object that uses Object's [[Get]] method to access own enumerable property (15.2.3.7 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var props = new Error(\"test\");\n\n (Object.getOwnPropertyNames(props)).forEach(function(name){\n props[name] = {value:11, configurable:true}\n });\n\n props.prop15_2_3_5_4_37 = {\n value: 12,\n enumerable: true\n };\n var newObj = Object.create({}, props);\n return newObj.hasOwnProperty(\"prop15_2_3_5_4_37\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Array.prototype.forEach) && fnExists(Object.getOwnPropertyNames))"
+ },
+ {
+ "id": "15.2.3.5-4-38",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-38.js",
+ "description": "Object.create - 'Properties' is an Arguments object which implements its own [[Get]] method to access own enumerable property (15.2.3.7 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var argObj = (function () { return arguments; })();\n\n argObj.prop = {\n value: 12,\n enumerable: true\n };\n\n var newObj = Object.create({}, argObj);\n\n return newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-39",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-39.js",
+ "description": "Object.create - ensure that side-effects of gets occur in the same order as they would for: for (P in props) props[P] (15.2.3.7 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var props = {};\n props.prop1 = { value: 12, enumerable: true };\n props.prop2 = { value: true, enumerable: true };\n\n var tempArray = [];\n for (var p in props) {\n if (props.hasOwnProperty(p)) {\n tempArray.push(p);\n }\n }\n\n var newObj = Object.create({}, props);\n var index = 0;\n for (var q in newObj) {\n if (tempArray[index++] !== q && newObj.hasOwnProperty(q)) {\n return false;\n }\n }\n return true; \n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-4",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-4.js",
+ "description": "Object.create - argument 'Properties' is an object (15.2.3.7 step 2).",
+ "test": "assertTrue((function testcase() {\n\n var props = {};\n var result = false;\n\n Object.defineProperty(props, \"prop\", {\n get: function () {\n result = this instanceof Object;\n return {};\n },\n enumerable: true\n });\n Object.create({}, props);\n return result;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-40",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-40.js",
+ "description": "Object.create - ensure that if an exception is thrown it occurs in the correct order relative to prior and subsequent side-effects (15.2.3.7 step 5.a)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = {};\n var props = {};\n var i = 0;\n\n Object.defineProperty(props, \"prop1\", {\n get: function () {\n i++;\n return {};\n },\n enumerable: true\n });\n\n Object.defineProperty(props, \"prop2\", {\n get: function () {\n if (1 === i++) {\n throw new RangeError();\n } else {\n return {};\n }\n },\n enumerable: true\n });\n\n try {\n newObj = Object.create({}, props);\n return false;\n } catch (e) {\n return (e instanceof RangeError) && !newObj.hasOwnProperty(\"prop1\") && i === 2;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-41",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-41.js",
+ "description": "Object.create - value of one property in 'Properties' is undefined (8.10.5 step 1)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create({}, {\n prop: undefined \n });\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-42",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-42.js",
+ "description": "Object.create - value of one property in 'Properties' is null (8.10.5 step 1)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create({}, {\n prop: null \n });\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-43",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-43.js",
+ "description": "Object.create - value of one property in 'Properties' is false (8.10.5 step 1)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create({}, {\n prop: false \n });\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-44",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-44.js",
+ "description": "Object.create - value of one property in 'Properties' is a number primitive (8.10.5 step 1)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create({}, {\n prop: 12 \n });\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-45",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-45.js",
+ "description": "Object.create - value of one property in 'Properties' is a string (8.10.5 step 1)",
+ "test": "assertTrue((function testcase() {\n\n try {\n Object.create({}, {\n prop: \"abc\" \n });\n return false;\n } catch (e) {\n return (e instanceof TypeError);\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-46",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-46.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is true (8.10.5 step 3)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n var newObj = Object.create({}, {\n prop: {\n enumerable: true\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-47",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-47.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is not present (8.10.5 step 3)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {} \n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return !accessed;\n\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-48",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-48.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is own data property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: true\n } \n });\n\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-49",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-49.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is an inherited data property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var proto = {\n enumerable: true\n };\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-5",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-5.js",
+ "description": "Object.create - argument 'Properties' is a Function object (15.2.3.7 step 2)",
+ "test": "assertTrue((function testcase() {\n\n var props = function () { };\n var result = false;\n\n Object.defineProperty(props, \"prop\", {\n get: function () {\n result = this instanceof Function;\n return {};\n },\n enumerable: true\n });\n Object.create({}, props);\n return result;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-50",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-50.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is own data property that overrides an inherited data property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n var proto = {\n enumerable: true\n };\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"enumerable\", {\n value: false\n });\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return !accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-51",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-51.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is own data property that overrides an inherited accessor property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n var accessed = false;\n\n Object.defineProperty(proto, \"enumerable\", {\n get: function () {\n return true;\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"enumerable\", {\n value: false\n });\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return !accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-52",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-52.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is own accessor property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var descObj = {};\n Object.defineProperty(descObj, \"enumerable\", {\n get: function () {\n return true;\n }\n });\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-53",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-53.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is an inherited accessor property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n var accessed = false;\n\n Object.defineProperty(proto, \"enumerable\", {\n get: function () {\n return true;\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-54",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-54.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is own accessor property that overrides an inherited data property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n var proto = {\n enumerable: true\n };\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"enumerable\", {\n get: function () {\n return false;\n }\n });\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return !accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-55",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-55.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is own accessor property that overrides an inherited accessor property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n var accessed = false;\n Object.defineProperty(proto, \"enumerable\", {\n get: function () {\n return true;\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"enumerable\", {\n get: function () {\n return false;\n }\n });\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return !accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-56",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-56.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is own accessor property without a get function (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n var descObj = {};\n Object.defineProperty(descObj, \"enumerable\", {\n set: function () { }\n });\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return !accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-57",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-57.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is own accessor property without a get function, which overrides an inherited accessor property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var proto = {};\n var accessed = false;\n Object.defineProperty(proto, \"enumerable\", {\n get: function () {\n return true;\n }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n Object.defineProperty(descObj, \"enumerable\", {\n set: function () { }\n });\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return !accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-58",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-58.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is an inherited accessor property without a get function (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n\n var proto = {};\n var accessed = false;\n\n Object.defineProperty(proto, \"enumerable\", {\n set: function () { }\n });\n\n var ConstructFun = function () { };\n ConstructFun.prototype = proto;\n var descObj = new ConstructFun();\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return !accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-59",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-59.js",
+ "description": "Object.create - one property in 'Properties' is a Function object which implements its own [[Get]] method to access the 'enumerable' property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n var descObj = function () { };\n\n descObj.enumerable = true;\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-6",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-6.js",
+ "description": "Object.create - argument 'Properties' is an Array object (15.2.3.7 step 2).",
+ "test": "assertTrue((function testcase() {\n\n var props = [];\n var result = false;\n\n Object.defineProperty(props, \"prop\", {\n get: function () {\n result = this instanceof Array;\n return {};\n },\n enumerable: true\n });\n Object.create({}, props);\n return result;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-60",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-60.js",
+ "description": "Object.create - one property in 'Properties' is an Array object that uses Object's [[Get]] method to access the 'enumerable' property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n\n var accessed = false;\n var descObj = [];\n\n descObj.enumerable = true;\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-61",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-61.js",
+ "description": "Object.create - one property in 'Properties' is a String object that uses Object's [[Get]] method to access the 'enumerable' property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n var descObj = new String();\n\n descObj.enumerable = true;\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-62",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-62.js",
+ "description": "Object.create - one property in 'Properties' is a Boolean object that uses Object's [[Get]] method to access the 'enumerable' property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n var descObj = new Boolean(false);\n\n descObj.enumerable = true;\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-63",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-63.js",
+ "description": "Object.create - one property in 'Properties' is a Number object that uses Object's [[Get]] method to access the 'enumerable' property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n var descObj = new Number(-9);\n\n descObj.enumerable = true;\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-64",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-64.js",
+ "description": "Object.create - one property in 'Properties' is the Math object that uses Object's [[Get]] method to access the 'enumerable' property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n try {\n Math.enumerable = true;\n\n var newObj = Object.create({}, {\n prop: Math \n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n } finally {\n delete Math.enumerable;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-65",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-65.js",
+ "description": "Object.create - one property in 'Properties' is a Date object that uses Object's [[Get]] method to access the 'enumerable' property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n var descObj = new Date();\n\n descObj.enumerable = true;\n\n var newObj = Object.create({}, {\n prop: descObj \n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-66",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-66.js",
+ "description": "Object.create - one property in 'Properties' is a RegExp object that uses Object's [[Get]] method to access the 'enumerable' property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n var descObj = new RegExp();\n\n descObj.enumerable = true;\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-67",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-67.js",
+ "description": "Object.create - one property in 'Properties' is the JSON object that uses Object's [[Get]] method to access the 'enumerable' property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n try {\n JSON.enumerable = true;\n\n var newObj = Object.create({}, {\n prop: JSON\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n } finally {\n delete JSON.enumerable;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-68",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-68.js",
+ "description": "Object.create - one property in 'Properties' is an Error object that uses Object's [[Get]] method to access the 'enumerable' property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n var descObj = new Error();\n\n descObj.enumerable = true;\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-69",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-69.js",
+ "description": "Object.create - one property in 'Properties' is an Arguments object which implements its own [[Get]] method to access the 'enumerable' property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n \n var accessed = false;\n var argObj = (function () { return arguments; })();\n\n argObj.enumerable = true;\n\n var newObj = Object.create({}, {\n prop: argObj\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-7",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-7.js",
+ "description": "Object.create - argument 'Properties' is a String object (15.2.3.7 step 2)",
+ "test": "assertTrue((function testcase() {\n\n var props = new String();\n var result = false;\n\n Object.defineProperty(props, \"prop\", {\n get: function () {\n result = this instanceof String;\n return {};\n },\n enumerable: true\n });\n Object.create({}, props);\n return result;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-71",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-71.js",
+ "description": "Object.create - one property in 'Properties' is the global object that uses Object's [[Get]] method to access the 'enumerable' property (8.10.5 step 3.a)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n try {\n fnGlobalObject().enumerable = true;\n\n var newObj = Object.create({}, {\n prop: fnGlobalObject()\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n } finally {\n delete fnGlobalObject().enumerable;\n }\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-72",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-72.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is undefined (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: undefined\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return !accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-73",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-73.js",
+ "description": "Object.create - value of 'enumerable' property of one property in 'Properties' is null (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: null\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return !accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-74",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-74.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is true (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: true\n } \n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-75",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-75.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is false (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n\n var accessed = false;\n var descObj = {\n enumerable: false\n };\n\n var newObj = Object.create({}, {\n prop: descObj\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return !accessed && newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-76",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-76.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is 0 (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: 0\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return !accessed && newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-77",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-77.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is +0 (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: +0\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return !accessed && newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-78",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-78.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is -0 (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n \n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: -0\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return !accessed && newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-79",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-79.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is NaN (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n \n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: NaN\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return !accessed && newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-8",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-8.js",
+ "description": "Object.create - argument 'Properties' is a Boolean object whose primitive value is true (15.2.3.7 step 2).",
+ "test": "assertTrue((function testcase() {\n\n var props = new Boolean(true);\n var result = false;\n\n Object.defineProperty(props, \"prop\", {\n get: function () {\n result = this instanceof Boolean;\n return {};\n },\n enumerable: true\n });\n Object.create({}, props);\n return result;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-80",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-80.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is a positive number primitive (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: 12\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-81",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-81.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is a negative number primitive (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n \n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: -9\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-82",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-82.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is an empty string (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: \"\"\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return !accessed && newObj.hasOwnProperty(\"prop\");\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-83",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-83.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is a non-empty string (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: \"AB\\n\\\\cd\"\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-84",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-84.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is a Function object (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n \n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: function () { }\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-85",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-85.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is an Array object (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: []\n }\n });\n\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-86",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-86.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is a String object (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: new String()\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-87",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-87.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is a Boolean object (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: new Boolean(true)\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-88",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-88.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is a Number object (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: new Number(-9)\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-89",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-89.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is the Math object (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: Math\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-9",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-9.js",
+ "description": "Object.create - argument 'Properties' is a Number object whose primitive value is any interesting number (15.2.3.7 step 2).",
+ "test": "assertTrue((function testcase() {\n\n var props = new Number(12);\n var result = false;\n\n Object.defineProperty(props, \"prop\", {\n get: function () {\n result = this instanceof Number;\n return {};\n },\n enumerable: true\n });\n Object.create({}, props);\n return result;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create) && fnExists(Object.defineProperty))"
+ },
+ {
+ "id": "15.2.3.5-4-90",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-90.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is a Date object (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: new Date()\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-91",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-91.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is a RegExp object (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: new RegExp()\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-92",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-92.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is the JSON object (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: JSON\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-93",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-93.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is an Error object (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: new Error()\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-94",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-94.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is an Arguments object (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n var argObj = (function () { return arguments; })();\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: argObj\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-96",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-96.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is the global object (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n \n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: fnGlobalObject()\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-97",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-97.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is a string (value is 'false'), which is treated as the value true (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n \n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: \"false\"\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-98",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-98.js",
+ "description": "Object.create - 'enumerable' property of one property in 'Properties' is new Boolean(false), which is treated as the value true (8.10.5 step 3.b)",
+ "test": "assertTrue((function testcase() {\n\n var accessed = false;\n\n var newObj = Object.create({}, {\n prop: {\n enumerable: new Boolean(false)\n }\n });\n for (var property in newObj) {\n if (property === \"prop\") {\n accessed = true;\n }\n }\n return accessed;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ },
+ {
+ "id": "15.2.3.5-4-99",
+ "path": "TestCases/chapter15/15.2/15.2.3/15.2.3.5/15.2.3.5-4-99.js",
+ "description": "Object.create - 'configurable' property of one property in 'Properties' is true (8.10.5 step 4)",
+ "test": "assertTrue((function testcase() {\n\n var newObj = Object.create({}, {\n prop: {\n configurable: true\n }\n });\n\n var result1 = newObj.hasOwnProperty(\"prop\");\n delete newObj.prop;\n var result2 = newObj.hasOwnProperty(\"prop\");\n\n return result1 === true && result2 === false;\n }).call(this));\n",
+ "precondition": "(fnExists(Object.create))"
+ }
+ ]
+ }
+}