summaryrefslogtreecommitdiff
path: root/js/src/tests/ecma_5/Object/15.2.3.9.js
blob: c73437fa7d88cd6ec49952b3af5f531d92db05bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*
 * Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/licenses/publicdomain/
 */

/* Object.freeze */

function getme() { return 42; };
function setme(x) { };

var properties = { all:       { value:1, writable:true,  configurable:true,  enumerable: true },
                   readOnly:  { value:2, writable:false, configurable:true,  enumerable: true },
                   nonConfig: { value:3, writable:true,  configurable:false, enumerable: true },
                   none:      { value:4, writable:false, configurable:false, enumerable: true },
                   getter:    { get: getme,              configurable:false, enumerable: true },
                   setter:    { set: setme,              configurable:false, enumerable: true },
                   getandset: { get: getme, set: setme,  configurable:false, enumerable: true }
                 };
var o = Object.defineProperties({}, properties);

Object.freeze(o);

function getPropertyOf(obj) {
    return function (prop) {
        return Object.getOwnPropertyDescriptor(obj, prop);
    };
};

assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'all'),
                   { value: 1, writable:false,  enumerable:true, configurable:false }),
         true);
assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'readOnly'),
                   { value: 2, writable:false,  enumerable:true, configurable:false }),
         true);
assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'nonConfig'),
                    { value: 3, writable:false,  enumerable:true, configurable:false }),
         true);
assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'none'),
                    { value: 4, writable:false,  enumerable:true, configurable:false }),
         true);
assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'getter'),
                    { get: getme, set: (void 0), enumerable:true, configurable:false }),
         true);
assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'setter'),
                    { set: setme, get: (void 0), enumerable:true, configurable:false }),
         true);
assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'getandset'),
                    { get: getme, set: setme,    enumerable:true, configurable:false }),
         true);

reportCompare(true, true);