properties-arg-to-object.js (2763B)
1 // Copyright (C) 2019 Leo Balter. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 4 /*--- 5 esid: sec-object.create 6 description: > 7 The Properties argument is cast to an object if not undefined 8 info: | 9 Object.create ( O, Properties ) 10 11 3. If Properties is not undefined, then 12 a. Return ? ObjectDefineProperties(obj, Properties). 13 14 Runtime Semantics: ObjectDefineProperties ( O, Properties ) 15 16 2. Let props be ? ToObject(Properties). 17 3. Let keys be ? props.[[OwnPropertyKeys]](). 18 ... 19 // All enumerable keys are added to the created object. 20 features: [Symbol] 21 ---*/ 22 23 var proto = {}; 24 25 var obj; 26 obj = Object.create(proto, true); 27 assert.sameValue(Object.getPrototypeOf(obj), proto, 'Properties is true: prototype is set'); 28 assert.sameValue(Object.getOwnPropertyNames(obj).length, 0, 'Properties is true: no keys set'); 29 assert.sameValue(Object.getOwnPropertySymbols(obj).length, 0, 'Properties is true: no symbol keys set'); 30 31 obj = undefined; 32 obj = Object.create(proto, false); 33 assert.sameValue(Object.getPrototypeOf(obj), proto, 'Properties is false: prototype is set'); 34 assert.sameValue(Object.getOwnPropertyNames(obj).length, 0, 'Properties is false: no keys set'); 35 assert.sameValue(Object.getOwnPropertySymbols(obj).length, 0, 'Properties is false: no symbol keys set'); 36 37 obj = undefined; 38 obj = Object.create(proto, 1); 39 assert.sameValue(Object.getPrototypeOf(obj), proto, 'Properties is 1: prototype is set'); 40 assert.sameValue(Object.getOwnPropertyNames(obj).length, 0, 'Properties is 1: no keys set'); 41 assert.sameValue(Object.getOwnPropertySymbols(obj).length, 0, 'Properties is 1: no symbol keys set'); 42 43 obj = undefined; 44 obj = Object.create(proto, NaN); 45 assert.sameValue(Object.getPrototypeOf(obj), proto, 'Properties is NaN: prototype is set'); 46 assert.sameValue(Object.getOwnPropertyNames(obj).length, 0, 'Properties is NaN: no keys set'); 47 assert.sameValue(Object.getOwnPropertySymbols(obj).length, 0, 'Properties is NaN: no symbol keys set'); 48 49 obj = undefined; 50 obj = Object.create(proto, ''); 51 assert.sameValue(Object.getPrototypeOf(obj), proto, 'Properties is the empty string: prototype is set'); 52 assert.sameValue(Object.getOwnPropertyNames(obj).length, 0, 'Properties is the empty string: no keys set'); 53 assert.sameValue(Object.getOwnPropertySymbols(obj).length, 0, 'Properties is the empty string: no symbol keys set'); 54 55 obj = undefined; 56 obj = Object.create(proto, Symbol('s')); 57 assert.sameValue(Object.getPrototypeOf(obj), proto, 'Properties is symbol: prototype is set'); 58 assert.sameValue(Object.getOwnPropertyNames(obj).length, 0, 'Properties is symbol: no keys set'); 59 assert.sameValue(Object.getOwnPropertySymbols(obj).length, 0, 'Properties is symbol: no symbol keys set'); 60 61 reportCompare(0, 0);