tor-browser

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

setelem.js (2036B)


      1 function testInt32() {
      2    function f(arr, i) {
      3        arr[0] = 1;
      4        arr[1] = arr[0] + 1;
      5        arr[2] = arr[1] + arr[0];
      6        var x = arr[2]; // 3
      7        arr[x] = arr[x-1] + 1;
      8        arr[x+1] = arr[x] + i;
      9        return arr[4];
     10    }
     11    var a = [1, 2, 3, 4, 5, 6, 7, 8];
     12    for (var i=0; i<70; i++) {
     13        assertEq(f(a, i), i + 4);
     14    }
     15 }
     16 testInt32();
     17 
     18 function testDouble() {
     19    function f(arr, d) {
     20        arr[0] = d;
     21        for (var i=1; i<8; i++) {
     22            arr[i] = arr[i-1] + d;
     23        }
     24        return arr[7];
     25    }
     26    var a = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0];
     27    for (var i=0; i<50; i++) {
     28        assertEq(f(a, Math.PI + i)|0, ((Math.PI + i) * 8)|0);
     29    }
     30 }
     31 testDouble();
     32 
     33 function testOutOfBounds() {
     34    function f(arr, i, v) {
     35        arr[i] = v;
     36    }
     37    var a = [1, 2];
     38    for (var i=0; i<90; i++) {
     39        f(a, 1, i);
     40    }
     41    assertEq(a[1], 89);
     42 
     43    f(a, 2, 40);
     44    f(a, 100, 50);
     45    f(a, -1, 3);
     46 
     47    assertEq(a[2], 40);
     48    assertEq(a[100], 50);
     49    assertEq(a[-1], 3);
     50 }
     51 testOutOfBounds();
     52 
     53 function testClassGuard() {
     54    function f(arr, v) {
     55        arr[1] = v;
     56    }
     57    var a = [1, 2, 3, 4];
     58    for (var i=0; i<90; i++) {
     59        f(a, i);
     60    }
     61    assertEq(a[1], 89);
     62 
     63    var b = {};
     64    f(b, 100);
     65    assertEq(b[1], 100);
     66 }
     67 testClassGuard();
     68 
     69 function testMultipleTypes() {
     70    function f(arr, v) {
     71        arr[1] = v;
     72    }
     73    var a = [1, 2, 3, 4];
     74    var b = [1.1, -233.2, 3.3];
     75 
     76    for (var i=0; i<90; i++) {
     77        f(a, i);
     78    }
     79    assertEq(a[1], 89);
     80    f(b, 20);
     81    assertEq(b[1], 20);
     82 }
     83 testMultipleTypes();
     84 
     85 function testNull() {
     86    function f(arr) {
     87        arr[0] = null;
     88    }
     89 
     90    var arr = [undefined];
     91    for (var i=0; i<100; i++) {
     92        f(arr);
     93    }
     94    assertEq(arr[0], null);
     95 }
     96 testNull();
     97 
     98 // Bug 722245.
     99 function testConstantGcThing() {
    100    function f(arr, x) {
    101        arr[x] = "abc";
    102    }
    103    var arr = ["", ""];
    104    for (var i=0; i<100; i++) {
    105        f(arr, 1);
    106    }
    107    assertEq(arr[1], "abc");
    108 }
    109 testConstantGcThing();