tor-browser

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

iterator-close-via-break.js (1106B)


      1 // Copyright (C) 2015 the V8 project authors. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 /*---
      4 es6id: 13.6.4.13
      5 description: >
      6    Iterators should be closed via their `return` method when iteration is
      7    interrupted via a `break` statement.
      8 features: [Symbol.iterator]
      9 ---*/
     10 
     11 var startedCount = 0;
     12 var returnCount = 0;
     13 var iterationCount = 0;
     14 var iterable = {};
     15 
     16 iterable[Symbol.iterator] = function() {
     17  return {
     18    next: function() {
     19      startedCount += 1;
     20      return { done: false, value: null };
     21    },
     22    return: function() {
     23      returnCount += 1;
     24      return {};
     25    }
     26  };
     27 };
     28 
     29 for (var x of iterable) {
     30  assert.sameValue(
     31    startedCount, 1, 'Value is retrieved'
     32  );
     33  assert.sameValue(
     34    returnCount, 0, 'Iterator is not closed'
     35  );
     36  iterationCount += 1;
     37  break;
     38 }
     39 
     40 assert.sameValue(
     41  startedCount, 1, 'Iterator does not restart following interruption'
     42 );
     43 assert.sameValue(iterationCount, 1, 'A single iteration occurs');
     44 assert.sameValue(
     45  returnCount, 1, 'Iterator is closed after `break` statement'
     46 );
     47 
     48 reportCompare(0, 0);