symbols-included.js (1868B)
1 // Copyright (C) 2016 Jordan Harband. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 4 /*--- 5 description: Object.getOwnPropertyDescriptors includes Symbol keys. 6 esid: sec-object.getownpropertydescriptors 7 author: Jordan Harband 8 features: [Symbol] 9 ---*/ 10 11 var value = {}; 12 var enumSym = Symbol('enum'); 13 var nonEnumSym = Symbol('nonenum'); 14 var symValue = Symbol('value'); 15 16 var obj = { 17 key: symValue 18 }; 19 obj[enumSym] = value; 20 Object.defineProperty(obj, nonEnumSym, { 21 writable: true, 22 enumerable: false, 23 configurable: true, 24 value: value 25 }); 26 27 var result = Object.getOwnPropertyDescriptors(obj); 28 29 assert.sameValue(Object.keys(result).length, 1, 'obj has 1 string-keyed descriptor'); 30 assert.sameValue(Object.getOwnPropertySymbols(result).length, 2, 'obj has 2 symbol-keyed descriptors'); 31 32 assert.sameValue(result.key.configurable, true, 'result.key is configurable'); 33 assert.sameValue(result.key.enumerable, true, 'result.key is enumerable'); 34 assert.sameValue(result.key.writable, true, 'result.key is writable'); 35 assert.sameValue(result.key.value, symValue, 'result.key has value symValue'); 36 37 assert.sameValue(result[enumSym].configurable, true, 'result[enumSym] is configurable'); 38 assert.sameValue(result[enumSym].enumerable, true, 'result[enumSym] is enumerable'); 39 assert.sameValue(result[enumSym].writable, true, 'result[enumSym] is writable'); 40 assert.sameValue(result[enumSym].value, value, 'result[enumSym] has value `value`'); 41 42 assert.sameValue(result[nonEnumSym].configurable, true, 'result[nonEnumSym] is configurable'); 43 assert.sameValue(result[nonEnumSym].enumerable, false, 'result[nonEnumSym] is not enumerable'); 44 assert.sameValue(result[nonEnumSym].writable, true, 'result[nonEnumSym] is writable'); 45 assert.sameValue(result[nonEnumSym].value, value, 'result[nonEnumSym] has value `value`'); 46 47 reportCompare(0, 0);