diff options
Diffstat (limited to 'website/resources/scripts/testcases2/15.2.3.5.json')
-rw-r--r-- | website/resources/scripts/testcases2/15.2.3.5.json | 2205 |
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))" + } + ] + } +} |