tor-browser

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

call-any-native.js (1855B)


      1 // Test non-constructor calls
      2 
      3 var funcs = [Math.max, Math.min, Math.floor, Math.ceil, Math.sin,
      4             Math.cos, Math.tan, Math.log, Math.acos, Math.asin];
      5 
      6 // Calculate expected values
      7 var expected = [Math.max(0.5, 2), Math.min(0.5, 2),
      8                Math.floor(0.5, 2), Math.ceil(0.5, 2),
      9                Math.sin(0.5, 2), Math.cos(0.5, 2),
     10                Math.tan(0.5, 2), Math.log(0.5, 2),
     11                Math.acos(0.5, 2), Math.asin(0.5, 2)];
     12 
     13 // Test a polymorphic call site
     14 for (var n = 0; n < 50; n++) {
     15    for (var i = 0; i < funcs.length; i++) {
     16        assertEq(funcs[i](0.5, 2), expected[i]);
     17    }
     18 }
     19 
     20 // Test a polymorphic spread call site
     21 var spreadinput = [0.5, 2];
     22 for (var n = 0; n < 50; n++) {
     23    for (var i = 0; i < funcs.length; i++) {
     24        assertEq(funcs[i](...spreadinput), expected[i]);
     25    }
     26 }
     27 
     28 // Test constructors
     29 
     30 function f1(x) {this[0] = x; this.length = 3;}
     31 function f2(x) {this[0] = x; this.length = 3;}
     32 function f3(x) {this[0] = x; this.length = 3;}
     33 function f4(x) {this[0] = x; this.length = 3;}
     34 function f5(x) {this[0] = x; this.length = 3;}
     35 function f6(x) {this[0] = x; this.length = 3;}
     36 function f7(x) {this[0] = x; this.length = 3;}
     37 function f8(x) {this[0] = x; this.length = 3;}
     38 function f9(x) {this[0] = x; this.length = 3;}
     39 
     40 var constructors = [f1,f2,f3,f4,f5,f6,f7,f8,f9,Array];
     41 
     42 // Test a polymorphic constructor site
     43 for (var n = 0; n < 50; n++) {
     44    for (var i = 0; i < constructors.length; i++) {
     45        let x = new constructors[i](1,2,3);
     46        assertEq(x.length, 3);
     47        assertEq(x[0], 1);
     48    }
     49 }
     50 
     51 var constructorinput = [1,2,3];
     52 // Test a polymorphic spread constructor site
     53 for (var n = 0; n < 50; n++) {
     54    for (var i = 0; i < constructors.length; i++) {
     55        let x = new constructors[i](...constructorinput);
     56        assertEq(x.length, 3);
     57        assertEq(x[0], 1);
     58    }
     59 }