michael@0: /* michael@0: * Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/licenses/publicdomain/ michael@0: */ michael@0: michael@0: /* Object.freeze */ michael@0: michael@0: function getme() { return 42; }; michael@0: function setme(x) { }; michael@0: michael@0: var properties = { all: { value:1, writable:true, configurable:true, enumerable: true }, michael@0: readOnly: { value:2, writable:false, configurable:true, enumerable: true }, michael@0: nonConfig: { value:3, writable:true, configurable:false, enumerable: true }, michael@0: none: { value:4, writable:false, configurable:false, enumerable: true }, michael@0: getter: { get: getme, configurable:false, enumerable: true }, michael@0: setter: { set: setme, configurable:false, enumerable: true }, michael@0: getandset: { get: getme, set: setme, configurable:false, enumerable: true } michael@0: }; michael@0: var o = Object.defineProperties({}, properties); michael@0: michael@0: Object.freeze(o); michael@0: michael@0: function getPropertyOf(obj) { michael@0: return function (prop) { michael@0: return Object.getOwnPropertyDescriptor(obj, prop); michael@0: }; michael@0: }; michael@0: michael@0: assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'all'), michael@0: { value: 1, writable:false, enumerable:true, configurable:false }), michael@0: true); michael@0: assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'readOnly'), michael@0: { value: 2, writable:false, enumerable:true, configurable:false }), michael@0: true); michael@0: assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'nonConfig'), michael@0: { value: 3, writable:false, enumerable:true, configurable:false }), michael@0: true); michael@0: assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'none'), michael@0: { value: 4, writable:false, enumerable:true, configurable:false }), michael@0: true); michael@0: assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'getter'), michael@0: { get: getme, set: (void 0), enumerable:true, configurable:false }), michael@0: true); michael@0: assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'setter'), michael@0: { set: setme, get: (void 0), enumerable:true, configurable:false }), michael@0: true); michael@0: assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'getandset'), michael@0: { get: getme, set: setme, enumerable:true, configurable:false }), michael@0: true); michael@0: michael@0: reportCompare(true, true);