20 lines
416 B
JavaScript
20 lines
416 B
JavaScript
function *adder(total = 0) {
|
|
let increment = 1;
|
|
while (true) {
|
|
let request = function.sent;
|
|
switch (request) {
|
|
case undefined: break;
|
|
case "done": return total;
|
|
default: increment = Number(request);
|
|
}
|
|
yield total += increment;
|
|
}
|
|
}
|
|
|
|
let tally = adder();
|
|
tally.next(0.1);
|
|
tally.next(0.1);
|
|
tally.next(0.1);
|
|
let last = tally.next("done");
|
|
expect(last.value).toBeCloseTo(0.3, 10);
|