tor-browser

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

iterator-next-result-done-attr.js (2341B)


      1 // Copyright (C) 2013 the V8 project authors. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 /*---
      4 es6id: 7.4.3
      5 description: >
      6    The `done` value of iteration result objects should be interpreted as
      7    incomplete as per `ToBoolean` (7.1.2).
      8 features: [Symbol.iterator]
      9 ---*/
     10 
     11 var iterable = {};
     12 var i, firstIterResult;
     13 
     14 iterable[Symbol.iterator] = function() {
     15  var finalIterResult = { value: null, done: true };
     16  var nextIterResult = firstIterResult;
     17 
     18  return {
     19    next: function() {
     20      var iterResult = nextIterResult;
     21 
     22      nextIterResult = finalIterResult;
     23 
     24      return iterResult;
     25    }
     26  };
     27 };
     28 
     29 firstIterResult = { value: null, done: undefined };
     30 i = 0;
     31 for (var x of iterable) {
     32  i++;
     33 }
     34 assert.sameValue(i, 1);
     35 
     36 firstIterResult = { value: null };
     37 i = 0;
     38 for (var x of iterable) {
     39  i++;
     40 }
     41 assert.sameValue(i, 1);
     42 
     43 firstIterResult = { value: null, done: null };
     44 i = 0;
     45 for (var x of iterable) {
     46  i++;
     47 }
     48 assert.sameValue(i, 1);
     49 
     50 firstIterResult = { value: null, done: false };
     51 i = 0;
     52 for (var x of iterable) {
     53  i++;
     54 }
     55 assert.sameValue(i, 1);
     56 
     57 firstIterResult = { value: null, done: true };
     58 i = 0;
     59 for (var x of iterable) {
     60  i++;
     61 }
     62 assert.sameValue(i, 0);
     63 
     64 firstIterResult = { value: null, done: 1 };
     65 i = 0;
     66 for (var x of iterable) {
     67  i++;
     68 }
     69 assert.sameValue(i, 0);
     70 
     71 firstIterResult = { value: null, done: 0 };
     72 i = 0;
     73 for (var x of iterable) {
     74  i++;
     75 }
     76 assert.sameValue(i, 1);
     77 
     78 firstIterResult = { value: null, done: -0 };
     79 i = 0;
     80 for (var x of iterable) {
     81  i++;
     82 }
     83 assert.sameValue(i, 1);
     84 
     85 firstIterResult = { value: null, done: NaN };
     86 i = 0;
     87 for (var x of iterable) {
     88  i++;
     89 }
     90 assert.sameValue(i, 1);
     91 
     92 firstIterResult = { value: null, done: '' };
     93 i = 0;
     94 for (var x of iterable) {
     95  i++;
     96 }
     97 assert.sameValue(i, 1);
     98 
     99 firstIterResult = { value: null, done: '0' };
    100 i = 0;
    101 for (var x of iterable) {
    102  i++;
    103 }
    104 assert.sameValue(i, 0);
    105 
    106 firstIterResult = { value: null, done: Symbol() };
    107 i = 0;
    108 for (var x of iterable) {
    109  i++;
    110 }
    111 assert.sameValue(i, 0);
    112 
    113 firstIterResult = { value: null, done: {} };
    114 i = 0;
    115 for (var x of iterable) {
    116  i++;
    117 }
    118 assert.sameValue(i, 0);
    119 
    120 firstIterResult = { value: null };
    121 Object.defineProperty(firstIterResult, 'done', {
    122  get: function() {
    123    return true;
    124  }
    125 });
    126 i = 0;
    127 for (var x of iterable) {
    128  i++;
    129 }
    130 assert.sameValue(i, 0);
    131 
    132 reportCompare(0, 0);