tor-browser

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

superSetProperty.js (1374B)


      1 class Base
      2 {
      3    set setter(val) {
      4        this.set_val = val;
      5        this.set_this = this;
      6    }
      7 }
      8 Base.prototype.prop = "Base";
      9 
     10 class Derived extends Base
     11 {
     12    set setter(val) { super.setter = val; }
     13    setelem(pname, val) { super[pname] = val; }
     14 }
     15 
     16 // Test SETPROP_SUPER invoke setters correctly
     17 function testSetterChain() {
     18    let d = new Derived();
     19 
     20    for (let i = 0; i < 10; ++i)
     21    {
     22        d.setter = i;
     23        assertEq(d.set_val, i);
     24        assertEq(d.set_this, d);
     25    }
     26 }
     27 function testSetterChainElem() {
     28    let d = new Derived();
     29 
     30    for (let i = 0; i < 10; ++i)
     31    {
     32        d.setelem("setter", i);
     33        assertEq(d.set_val, i);
     34        assertEq(d.set_this, d);
     35    }
     36 }
     37 
     38 // Test that SETPROP_SUPER modifies |this| and not home object
     39 function testSuperSetProp() {
     40    let d = new Derived();
     41 
     42    for (let i = 0; i < 10; ++i)
     43    {
     44        d.prop = i;
     45        assertEq(d.prop, i);
     46        assertEq(d.hasOwnProperty("prop"), true);
     47        assertEq(Derived.prototype.prop, "Base");
     48    }
     49 }
     50 function testSuperSetPropElem() {
     51    let d = new Derived();
     52 
     53    for (let i = 0; i < 10; ++i)
     54    {
     55        d.setelem("prop", i);
     56        assertEq(d.prop, i);
     57        assertEq(d.hasOwnProperty("prop"), true);
     58        assertEq(Derived.prototype.prop, "Base");
     59    }
     60 }
     61 
     62 testSetterChain();
     63 testSetterChainElem();
     64 
     65 testSuperSetProp();
     66 testSuperSetPropElem();