tor-browser

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

nativeElementAccesses.js (916B)


      1 function testOverwritingSparseHole()
      2 {
      3  var x = [];
      4  for (var i = 0; i < 50; i++)
      5    x[i] = i;
      6  var hit = false;
      7  Object.defineProperty(x, 40, {set: function() { hit = true; }});
      8  for (var i = 0; i < 50; i++)
      9    x[i] = 10;
     10  assertEq(hit, true);
     11 }
     12 testOverwritingSparseHole();
     13 
     14 function testReadingSparseHole()
     15 {
     16  var x = [];
     17  for (var i = 5; i < 50; i++)
     18    x[i] = i;
     19  var hit = false;
     20  Object.defineProperty(x, 40, {get: function() { hit = true; return 5.5; }});
     21  var res = 0;
     22  for (var i = 0; i < 50; i++) {
     23    res += x[i];
     24    if (i == 10)
     25      res = 0;
     26  }
     27  assertEq(res, 1135.5);
     28  assertEq(hit, true);
     29 }
     30 testReadingSparseHole();
     31 
     32 function testInSparseHole()
     33 {
     34  var x = [];
     35  for (var i = 5; i < 50; i++)
     36    x[i] = i;
     37  Object.defineProperty(x, 40, {get: function() {}});
     38  var res = 0;
     39  for (var i = 0; i < 50; i++)
     40    res += (i in x) ? 1 : 0;
     41  assertEq(res, 45);
     42 }
     43 testInSparseHole();