tor-browser

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

iterables-iteration-after-reading-options.js (1394B)


      1 // Copyright (C) 2025 André Bargull. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 esid: sec-iterator.zip
      6 description: >
      7  Perform iteration of the "iterables" argument after reading all properties.
      8 info: |
      9  Iterator.zip ( iterables [ , options ] )
     10    ...
     11    3. Let mode be ? Get(options, "mode").
     12    ...
     13    7. If mode is "longest", then
     14      a. Set paddingOption to ? Get(options, "padding").
     15    ...
     16    10. Let inputIter be ? GetIterator(iterables, sync).
     17    ...
     18 includes: [compareArray.js]
     19 features: [joint-iteration]
     20 ---*/
     21 
     22 var log = [];
     23 
     24 var iterables = {
     25  [Symbol.iterator]() {
     26    log.push("get iterator");
     27    return this;
     28  },
     29  next() {
     30    return {done: true};
     31  }
     32 };
     33 
     34 var options = {
     35  get mode() {
     36    log.push("get mode");
     37    return "longest";
     38  },
     39  get padding() {
     40    log.push("get padding");
     41    return [];
     42  }
     43 };
     44 
     45 Iterator.zip(iterables, options);
     46 
     47 assert.compareArray(log, [
     48  "get mode",
     49  "get padding",
     50  "get iterator",
     51 ]);
     52 
     53 for (var mode of [undefined, "shortest", "strict"]) {
     54  log.length = 0;
     55 
     56  options = {
     57    get mode() {
     58      log.push("get mode");
     59      return mode;
     60    },
     61    get padding() {
     62      log.push("unexpected get padding");
     63      return [];
     64    }
     65  };
     66 
     67  Iterator.zip(iterables, options);
     68 
     69  assert.compareArray(log, [
     70    "get mode",
     71    "get iterator",
     72  ]);
     73 }
     74 
     75 reportCompare(0, 0);