15.2.3.6-4-540-1.js (1637B)
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-1 6 description: > 7 Object.defineProperty fails to update [[Get]] and [[Set]] 8 attributes of a named accessor property 'P' whose [[Configurable]] 9 attribute is false and throws TypeError exception, 'O' is an 10 Object 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, "property", { 24 get: getFunc, 25 set: setFunc, 26 configurable: false 27 }); 28 29 var result = false; 30 try { 31 Object.defineProperty(obj, "property", { 32 get: function() { 33 return 100; 34 } 35 }); 36 } catch (e) { 37 result = e instanceof TypeError; 38 verifyEqualTo(obj, "property", getFunc()); 39 40 verifyWritable(obj, "property", "verifySetFunction"); 41 } 42 43 verifyProperty(obj, "property", { 44 enumerable: false, 45 configurable: false, 46 }); 47 48 try { 49 Object.defineProperty(obj, "property", { 50 set: function(value) { 51 obj.verifySetFunction1 = value; 52 } 53 }); 54 } catch (e) { 55 if (!result) { 56 throw new Test262Error('Expected result to be true, actually ' + result); 57 } 58 59 verifyEqualTo(obj, "property", getFunc()); 60 61 verifyWritable(obj, "property", "verifySetFunction"); 62 63 if (!(e instanceof TypeError)) { 64 throw new Test262Error("Expected TypeError, got " + e); 65 } 66 } 67 68 verifyProperty(obj, "property", { 69 enumerable: false, 70 configurable: false, 71 }); 72 73 reportCompare(0, 0);