15.2.3.6-4-540-7.js (1595B)
1 // Copyright (c) 2012 Ecma International. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 4 /*--- 5 es5id: 15.2.3.6-4-540-7 6 description: > 7 Object.defineProperty fails to update [[Get]] and [[Set]] 8 attributes of a named property 'P' whose [[Configurable]] 9 attribute is false and throws TypeError exception, 'A' is an Array 10 object (8.12.9 step 11.a) 11 includes: [propertyHelper.js] 12 ---*/ 13 14 var obj = []; 15 16 obj.verifySetFunction = "data"; 17 var getFunc = function() { 18 return obj.verifySetFunction; 19 }; 20 var setFunc = function(value) { 21 obj.verifySetFunction = value; 22 }; 23 Object.defineProperty(obj, "prop", { 24 get: getFunc, 25 set: setFunc, 26 configurable: false 27 }); 28 29 var result = false; 30 try { 31 Object.defineProperty(obj, "prop", { 32 get: function() { 33 return 100; 34 } 35 }); 36 } catch (e) { 37 result = e instanceof TypeError; 38 verifyEqualTo(obj, "prop", getFunc()); 39 40 verifyWritable(obj, "prop", "verifySetFunction"); 41 } 42 43 verifyProperty(obj, "prop", { 44 enumerable: false, 45 configurable: false, 46 }); 47 48 try { 49 Object.defineProperty(obj, "prop", { 50 set: function(value) { 51 obj.verifySetFunction1 = value; 52 } 53 }); 54 } catch (e1) { 55 if (!result) { 56 throw new Test262Error('Expected result to be true, actually ' + result); 57 } 58 59 60 verifyEqualTo(obj, "prop", getFunc()); 61 62 verifyWritable(obj, "prop", "verifySetFunction"); 63 64 if (!(e1 instanceof TypeError)) { 65 throw new Test262Error("Expected TypeError, got " + e1); 66 } 67 } 68 69 verifyProperty(obj, "prop", { 70 enumerable: false, 71 configurable: false, 72 }); 73 74 reportCompare(0, 0);