mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-06-29 00:30:06 +00:00
45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
|
// Test that yield* can appear in a loop, and alongside yield.
|
||
|
|
||
|
function* countdown(n) {
|
||
|
while (n > 0) {
|
||
|
yield n;
|
||
|
yield* countdown(--n);
|
||
|
}
|
||
|
return 34;
|
||
|
}
|
||
|
|
||
|
function collect_results(iter) {
|
||
|
var ret = [];
|
||
|
var result;
|
||
|
do {
|
||
|
result = iter.next();
|
||
|
ret.push(result);
|
||
|
} while (!result.done);
|
||
|
return ret;
|
||
|
}
|
||
|
|
||
|
var expected = [
|
||
|
// yield in countdown(3), n == 3
|
||
|
{value: 3, done: false},
|
||
|
// yield in yield* countdown(2), n == 2
|
||
|
{value: 2, done: false},
|
||
|
// yield in nested yield* countdown(1), n == 1
|
||
|
{value: 1, done: false},
|
||
|
// countdown(0) yields no values
|
||
|
// second go-through of countdown(2) loop, n == 1
|
||
|
{value: 1, done: false},
|
||
|
// second go-through of countdown(3) loop, n == 2
|
||
|
{value: 2, done: false},
|
||
|
// yield in yield* countdown(1), n == 1
|
||
|
{value: 1, done: false},
|
||
|
// third go-through of countdown(3) loop, n == 1
|
||
|
{value: 1, done: false},
|
||
|
// done
|
||
|
{value: 34, done: true}
|
||
|
];
|
||
|
|
||
|
assertDeepEq(expected, collect_results(countdown(3)));
|
||
|
|
||
|
if (typeof reportCompare == "function")
|
||
|
reportCompare(true, true);
|