js/src/tests/ecma_6/Generators/delegating-yield-12.js

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:8b29b52cda5f
1 // yield* calls @@iterator on the iterable to produce the iterator.
2
3 var log = '';
4
5 function IteratorWrapper(iterator) {
6 return {
7 next: function (val) {
8 log += 'n';
9 return iterator.next(val);
10 },
11
12 throw: function (exn) {
13 log += 't';
14 return iterator.throw(exn);
15 }
16 };
17 }
18
19 function IterableWrapper(iterable) {
20 var ret = {};
21
22 ret[std_iterator] = function () {
23 log += 'i';
24 return IteratorWrapper(iterable[std_iterator]());
25 }
26
27 return ret;
28 }
29
30 function* delegate(iter) { return yield* iter; }
31
32 var iter = delegate(IterableWrapper([1, 2, 3]));
33 assertIteratorNext(iter, 1);
34 assertIteratorNext(iter, 2);
35 assertIteratorNext(iter, 3);
36 assertIteratorDone(iter, undefined);
37
38 assertEq(log, 'innnn');
39
40 iter = delegate([1, 2, 3]);
41 assertIteratorNext(iter, 1);
42 assertIteratorNext(iter, 2);
43 assertIteratorNext(iter, 3);
44 assertIteratorDone(iter, undefined);
45
46 assertEq(log, 'innnn');
47
48 if (typeof reportCompare == "function")
49 reportCompare(true, true);

mercurial