mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-06-25 20:29:33 +00:00
38 lines
995 B
JavaScript
38 lines
995 B
JavaScript
// Test that a deep yield* chain re-yields received results without
|
|
// re-boxing.
|
|
|
|
function results(results) {
|
|
var i = 0;
|
|
function next() {
|
|
return results[i++];
|
|
}
|
|
var iter = { next: next };
|
|
var ret = {};
|
|
ret[Symbol.iterator] = function () { return iter; }
|
|
return ret;
|
|
}
|
|
|
|
function* yield_results(expected, n) {
|
|
return yield* n ? yield_results(expected, n - 1) : results(expected);
|
|
}
|
|
|
|
function collect_results(iterable) {
|
|
var ret = [];
|
|
var result;
|
|
var iter = iterable[Symbol.iterator]();
|
|
do {
|
|
result = iter.next();
|
|
ret.push(result);
|
|
} while (!result.done);
|
|
return ret;
|
|
}
|
|
|
|
// We have to put a full result for the end, because the return will re-box.
|
|
var expected = [{value: 1}, 13, "foo", {value: 34, done: true}];
|
|
|
|
assertDeepEq(expected, collect_results(results(expected)));
|
|
assertDeepEq(expected, collect_results(yield_results(expected, 20)));
|
|
|
|
if (typeof reportCompare == "function")
|
|
reportCompare(true, true);
|