tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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);