tor-browser

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

using-loop-break.js (2200B)


      1 // |jit-test| skip-if: !getBuildConfiguration("explicit-resource-management"); --enable-explicit-resource-management
      2 
      3 load(libdir + "asserts.js");
      4 
      5 const disposedInFor = [];
      6 function testDisposalsInForWithBreak() {
      7  const disposables = [
      8    {
      9      value: "a",
     10      [Symbol.dispose]: () => disposedInFor.push("disposed a")
     11    },
     12    {
     13      value: "b",
     14      [Symbol.dispose]: () => disposedInFor.push("disposed b")
     15    },
     16    {
     17      value: "c",
     18      [Symbol.dispose]: () => disposedInFor.push("disposed c")
     19    }
     20  ];
     21 
     22  for (let i = 0; i < disposables.length; i++) {
     23    using disposable = disposables[i];
     24    if (disposable.value === "c") {
     25      break;
     26    }
     27    disposedInFor.push(disposable.value);
     28  }
     29 }
     30 
     31 testDisposalsInForWithBreak();
     32 assertArrayEq(disposedInFor, ["a", "disposed a", "b", "disposed b", "disposed c"]);
     33 
     34 
     35 const disposedInWhile = [];
     36 function testDisposalsInWhileWithBreak() {
     37  const disposables = [
     38    {
     39      value: "a",
     40      [Symbol.dispose]: () => disposedInWhile.push("disposed a")
     41    },
     42    {
     43      value: "b",
     44      [Symbol.dispose]: () => disposedInWhile.push("disposed b")
     45    },
     46    {
     47      value: "c",
     48      [Symbol.dispose]: () => disposedInWhile.push("disposed c")
     49    }
     50  ];
     51 
     52  let i = 0;
     53  while (i < disposables.length) {
     54    using disposable = disposables[i];
     55    if (disposable.value === "c") {
     56      break;
     57    }
     58    disposedInWhile.push(disposable.value);
     59    i++;
     60  }
     61 }
     62 
     63 testDisposalsInWhileWithBreak();
     64 assertArrayEq(disposedInWhile, ["a", "disposed a", "b", "disposed b", "disposed c"]);
     65 
     66 const disposedInForOf = [];
     67 function testDisposalsInForOfWithBreak() {
     68  const disposables = [
     69    {
     70      value: "a",
     71      [Symbol.dispose]: () => disposedInForOf.push("disposed a")
     72    },
     73    {
     74      value: "b",
     75      [Symbol.dispose]: () => disposedInForOf.push("disposed b")
     76    },
     77    {
     78      value: "c",
     79      [Symbol.dispose]: () => disposedInForOf.push("disposed c")
     80    }
     81  ];
     82 
     83  for (using disposable of disposables) {
     84    if (disposable.value === "c") {
     85      break;
     86    }
     87    disposedInForOf.push(disposable.value);
     88  }
     89 }
     90 
     91 testDisposalsInForOfWithBreak();
     92 assertArrayEq(disposedInForOf, ["a", "disposed a", "b", "disposed b", "disposed c"]);