tor-browser

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

Set-iterator-remove-6.js (587B)


      1 // Removing many Set entries does not cause a live iterator to skip any of the
      2 // entries that were not removed. (Compacting a Set must not be observable to
      3 // script.)
      4 
      5 load(libdir + "iteration.js");
      6 
      7 var set = new Set();
      8 for (var i = 0; i < 32; i++)
      9    set.add(i);
     10 var iter = set[Symbol.iterator]();
     11 assertIteratorNext(iter, 0);
     12 for (var i = 0; i < 30; i++)
     13    set.delete(i);
     14 assertEq(set.size, 2);
     15 for (var i = 32; i < 100; i++)
     16    set.add(i);  // eventually triggers compaction
     17 
     18 for (var i = 30; i < 100; i++)
     19    assertIteratorNext(iter, i);
     20 assertIteratorDone(iter, undefined);