tor-browser

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

assign-reuse-propmap.js (1221B)


      1 function testBasic() {
      2    var o1 = {x: 1};
      3    var o2 = {a: 1, b: 2, c: 3, x: 4, y: 5, z: 6};
      4    for (var i = 0; i < 4; i++) {
      5        var to1 = Object.assign({}, o1);
      6        assertEq(JSON.stringify(to1), '{"x":1}');
      7        var to2 = Object.assign({}, o2);
      8        assertEq(JSON.stringify(to2), '{"a":1,"b":2,"c":3,"x":4,"y":5,"z":6}');
      9    }
     10 }
     11 testBasic();
     12 
     13 // Target object's proto must not be changed by assign.
     14 function testProto() {
     15    var from = {};
     16    from.a = 1;
     17    from.b = 2;
     18    from.c = 3;
     19    for (var i = 0; i < 5; i++) {
     20        var to = Object.assign(Object.create(null), from);
     21        assertEq(JSON.stringify(to), '{"a":1,"b":2,"c":3}');
     22        assertEq(Object.getPrototypeOf(to), null);
     23    }
     24 }
     25 testProto();
     26 
     27 // Target object's realm must not be changed by assign.
     28 function testRealm() {
     29    var global = newGlobal({sameCompartmentAs: this});
     30    var from = global.evaluate("({})");
     31    from.a = 1;
     32    from.b = 2;
     33    from.c = 3;
     34    for (var i = 0; i < 5; i++) {
     35        var to = Object.assign({}, from);
     36        assertEq(JSON.stringify(to), '{"a":1,"b":2,"c":3}');
     37        assertEq(objectGlobal(to), this);
     38        assertEq(Object.getPrototypeOf(to), Object.prototype);
     39    }
     40 }
     41 testRealm();