15.2.3.6-miscellaneous.js (2157B)
1 // Any copyright is dedicated to the Public Domain. 2 // http://creativecommons.org/licenses/publicdomain/ 3 4 //----------------------------------------------------------------------------- 5 var BUGNUMBER = 430133; 6 var summary = 'ES5 Object.defineProperty(O, P, Attributes)'; 7 8 print(BUGNUMBER + ": " + summary); 9 10 /************** 11 * BEGIN TEST * 12 **************/ 13 14 var o = []; 15 Object.defineProperty(o, 0, { value: 17 }); 16 var desc = Object.getOwnPropertyDescriptor(o, 0); 17 assertEq(desc !== undefined, true); 18 assertEq(desc.value, 17); 19 assertEq(desc.enumerable, false); 20 assertEq(desc.configurable, false); 21 assertEq(desc.writable, false); 22 23 desc = Object.getOwnPropertyDescriptor(o, "length"); 24 assertEq(desc !== undefined, true); 25 assertEq(desc.enumerable, false); 26 assertEq(desc.configurable, false); 27 assertEq(desc.writable, true); 28 assertEq(desc.value, 1); 29 assertEq(o.length, 1); 30 31 Object.defineProperty(o, "foobar", 32 { value: 42, enumerable: false, configurable: true }); 33 assertEq(o.foobar, 42); 34 desc = Object.getOwnPropertyDescriptor(o, "foobar"); 35 assertEq(desc !== undefined, true); 36 assertEq(desc.value, 42); 37 assertEq(desc.configurable, true); 38 assertEq(desc.enumerable, false); 39 assertEq(desc.writable, false); 40 41 var called = false; 42 o = { set x(a) { called = true; } }; 43 Object.defineProperty(o, "x", { get: function() { return "get"; } }); 44 desc = Object.getOwnPropertyDescriptor(o, "x"); 45 assertEq("set" in desc, true); 46 assertEq("get" in desc, true); 47 assertEq(called, false); 48 o.x = 13; 49 assertEq(called, true); 50 51 var toSource = Object.prototype.toSource || function() { }; 52 toSource.call(o); // a test for this not crashing 53 54 var called = false; 55 var o = 56 Object.defineProperty({}, "foo", 57 { get: function() { return 17; }, 58 set: function(v) { called = true; } }); 59 60 assertEq(o.foo, 17); 61 o.foo = 42; 62 assertEq(called, true); 63 64 /* 65 * XXX need tests for Object.defineProperty(array, "length", { ... }) when we 66 * support it! 67 */ 68 69 /******************************************************************************/ 70 71 if (typeof reportCompare === "function") 72 reportCompare(true, true); 73 74 print("All tests passed!");