function* _qsort(_, beg, end) { if (beg >= end) return; if (end == beg + 1) { if ((yield galaxy.invoke(null, compare, [_, array[beg], array[end]], 0)) > 0) { var tmp = array[beg]; array[beg] = array[end]; array[end] = tmp; } return; } var mid = Math.floor((beg + end) / 2); var o = array[mid]; var nbeg = beg; var nend = end; while (nbeg <= nend) { while (nbeg < end && (yield galaxy.invoke(null, compare, [_, array[nbeg], o], 0)) < 0) nbeg++; while (beg < nend && (yield galaxy.invoke(null, compare, [_, o, array[nend]], 0)) < 0) nend--; if (nbeg <= nend) { var tmp = array[nbeg]; array[nbeg] = array[nend]; array[nend] = tmp; nbeg++; nend--; } } if (nbeg < end) (yield _qsort(_, nbeg, end)); if (beg < nend) (yield _qsort(_, beg, nend)); }
value: (function(unstarred__) { function F(_, options, fn, thisObj) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, options, fn, thisObj) { if (typeof options === "function") thisObj = fn, fn = options, options = 1; var par = _parallel(options); thisObj = thisObj !== undefined ? thisObj : this; var len = this.length; if (par === 1 || len <= 1) { for (var i = 0; i < len; i++) { if (has.call(this, i) && (yield galaxy.invoke(fn, "call", [thisObj, _, this[i]], 1))) return true; } } else { var fun = funnel(par); var futures = this.map(function(elt) { return fun(null, (function(unstarred__) { function F(_) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_) { return (yield galaxy.invoke(fn, "call", [thisObj, _, elt], 1)); }, 0))); }); for (var i = 0; i < len; i++) { if (has.call(this, i) && (yield galaxy.invoke(futures, i, [_], 0))) { fun.close(); return true; } } } return false; }, 0))
function* B(_, code){ if (code == 7) (yield galaxy.invoke(null, fail, [_, code], 0)); (yield C(_, code)); (yield galaxy.invoke(null, nextTick, [_], 0)); (yield C(_, code)); (yield D(_, code)); }
function * F(_, code) { var f1 = A_(null, code); var f2 = A_(null, code + 1); yield ( (yield fstreamline__.invoke(null, f1, [_], 0)) + " & " + (yield fstreamline__.invoke(null, f2, [_], 0))); }
function * B(_, code) { if (code == 7) (yield fstreamline__.invoke(null, fail, [_, code], 0)); (yield C(_, code)); (yield fstreamline__.invoke(null, nextTick, [_], 0)); (yield C(_, code)); (yield D(_, code)); }
function* E(_, code){ try { (yield galaxy.invoke(null, fail, [_, code], 0)); } catch (ex) { if (code % 3 == 1) (yield galaxy.invoke(null, fail, [_, code], 0)); else if (code % 3 == 2) (yield A(_, code)); else return "OK " + code; } }
value: (function(unstarred__) { function F(_, options, fn, thisObj) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, options, fn, thisObj) { if (typeof options === "function") thisObj = fn, fn = options, options = 1; var par = _parallel(options); thisObj = thisObj !== undefined ? thisObj : this; var len = this.length; if (par === 1 || len <= 1) { for (var i = 0; i < len; i++) { if (has.call(this, i)) (yield galaxy.invoke(fn, "call", [thisObj, _, this[i], i], 1)); } } else { (yield galaxy.invoke(this, "map_", [_, par, fn, thisObj], 0)); } return this; }, 0))
asyncTest("reduceRight", 3, (function(unstarred__) { function F(_) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_) { var result = (yield galaxy.invoke(flows, "reduceRight", [_, [1, 2, 3, 4], (function(unstarred__) { function F(_, v, val) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, v, val) { return v * (yield delay(_, val)); }, 0)), 1], 0)); strictEqual(result, 24); var result = (yield galaxy.invoke([1, 2, 3, 4], "reduceRight_", [_, (function(unstarred__) { function F(_, v, val) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, v, val) { return v * (yield delay(_, val)); }, 0)), 1], 0)); strictEqual(result, 24); var result = (yield galaxy.invoke(sparse(), "reduceRight_", [_, (function(unstarred__) { function F(_, v, val) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, v, val) { return v + '/' + (yield delay(_, val)); }, 0)), ''], 0)); strictEqual(result, '/99/44/33'); start(); }, 0)));
asyncTest("reduceRight", 3, galaxy.unstar(function*(_) { var result = (yield galaxy.invoke(flows, "reduceRight", [_, [1, 2, 3, 4], galaxy.unstar(function*(_, v, val) { return v * (yield delay(_, val)); }, 0), 1], 0)); strictEqual(result, 24); var result = (yield galaxy.invoke([1, 2, 3, 4], "reduceRight_", [_, galaxy.unstar(function*(_, v, val) { return v * (yield delay(_, val)); }, 0), 1], 0)); strictEqual(result, 24); var result = (yield galaxy.invoke(sparse(), "reduceRight_", [_, galaxy.unstar(function*(_, v, val) { return v + '/' + (yield delay(_, val)); }, 0), ''], 0)); strictEqual(result, '/99/44/33'); start(); }, 0));
exports.setImmediate = galaxy.unstar(function*(_, fn, thisObj) { (yield galaxy.invoke(null, (function(cb) { setImmediate(function() { fn.bind(thisObj)( cb); }); }), [_], 0)); }, 0);
function * D(_, code) { if (code == 9) (yield fstreamline__.invoke(null, fail, [_, code], 0)); }
function * E(_, code) { try { (yield fstreamline__.invoke(null, fail, [_, code], 0)); } catch (ex) { if (code % 3 == 1) (yield fstreamline__.invoke(null, fail, [_, code], 0)); else if (code % 3 == 2) (yield A(_, code)); else yield ( "OK " + code); } }
value: (function(unstarred__) { function F(_, fn, v, thisObj) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, fn, v, thisObj) { thisObj = thisObj !== undefined ? thisObj : this; var len = this.length; for (var i = len - 1; i >= 0; i--) { if (has.call(this, i)) v = (yield galaxy.invoke(fn, "call", [thisObj, _, v, this[i], i, this], 1)); } return v; }, 0))
asyncTest("filter", 9, galaxy.unstar(function*(_) { var result = (yield galaxy.invoke(flows, "filter", [_, [1, 2, 3, 4], galaxy.unstar(function*(_, val) { return (yield delay(_, val)) % 2; }, 0)], 0)); deepEqual(result, [1, 3]); var result = (yield galaxy.invoke([1, 2, 3, 4], "filter_", [_, galaxy.unstar(function*(_, val) { return (yield delay(_, val)) % 2; }, 0)], 0)); deepEqual(result, [1, 3]); var result = (yield galaxy.invoke([1, 2, 3, 4], "filter_", [_, 2, galaxy.unstar(function*(_, val) { return (yield delay(_, val)) % 2; }, 0)], 0)); deepEqual(result, [1, 3]); var result = (yield galaxy.invoke([1, 2, 3, 4], "filter_", [_, { parallel: 2 }, galaxy.unstar(function*(_, val) { return (yield delay(_, val)) % 2; }, 0)], 0)); deepEqual(result, [1, 3]); var result = (yield galaxy.invoke([1, 2, 3, 4], "filter_", [_, -1, galaxy.unstar(function*(_, val) { return (yield delay(_, val)) % 2; }, 0)], 0)); deepEqual(result, [1, 3]); result = (yield galaxy.invoke(sparse(), "filter_", [_, galaxy.unstar(function*(_, val, i) { return (yield delay(_, val)) % 2; }, 0)], 0)); strictEqual(result.length, 2); deepEqual(result, [33, 99]); result = (yield galaxy.invoke(sparse(), "filter_", [_, -1, galaxy.unstar(function*(_, val, i) { return (yield delay(_, val)) % 2; }, 0)], 0)); strictEqual(result.length, 2); deepEqual(result, [33, 99]); start(); }, 0));
asyncTest("some false", 7, (function(unstarred__) { function F(_) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_) { var result = (yield galaxy.invoke(flows, "some", [_, [1, 2, 3, 4], (function(unstarred__) { function F(_, val) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val) { return (yield delay(_, val)) < 0; }, 0))], 0)); strictEqual(result, false); var result = (yield galaxy.invoke([1, 2, 3, 4], "some_", [_, (function(unstarred__) { function F(_, val) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val) { return (yield delay(_, val)) < 0; }, 0))], 0)); strictEqual(result, false); var result = (yield galaxy.invoke([1, 2, 3, 4], "some_", [_, 2, (function(unstarred__) { function F(_, val) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val) { return (yield delay(_, val)) < 0; }, 0))], 0)); strictEqual(result, false); var result = (yield galaxy.invoke([1, 2, 3, 4], "some_", [_, { parallel: 2 }, (function(unstarred__) { function F(_, val) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val) { return (yield delay(_, val)) < 0; }, 0))], 0)); strictEqual(result, false); var result = (yield galaxy.invoke([1, 2, 3, 4], "some_", [_, -1, (function(unstarred__) { function F(_, val) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val) { return (yield delay(_, val)) < 0; }, 0))], 0)); strictEqual(result, false); result = (yield galaxy.invoke(sparse(), "some_", [_, (function(unstarred__) { function F(_, val, i) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val, i) { return !((yield delay(_, val)) > 20); }, 0))], 0)); strictEqual(result, false); result = (yield galaxy.invoke(sparse(), "some_", [_, -1, (function(unstarred__) { function F(_, val, i) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val, i) { return !((yield delay(_, val)) > 20); }, 0))], 0)); strictEqual(result, false); start(); }, 0)));
asyncTest("filter", 9, (function(unstarred__) { function F(_) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_) { var result = (yield galaxy.invoke(flows, "filter", [_, [1, 2, 3, 4], (function(unstarred__) { function F(_, val) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val) { return (yield delay(_, val)) % 2; }, 0))], 0)); deepEqual(result, [1, 3]); var result = (yield galaxy.invoke([1, 2, 3, 4], "filter_", [_, (function(unstarred__) { function F(_, val) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val) { return (yield delay(_, val)) % 2; }, 0))], 0)); deepEqual(result, [1, 3]); var result = (yield galaxy.invoke([1, 2, 3, 4], "filter_", [_, 2, (function(unstarred__) { function F(_, val) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val) { return (yield delay(_, val)) % 2; }, 0))], 0)); deepEqual(result, [1, 3]); var result = (yield galaxy.invoke([1, 2, 3, 4], "filter_", [_, { parallel: 2 }, (function(unstarred__) { function F(_, val) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val) { return (yield delay(_, val)) % 2; }, 0))], 0)); deepEqual(result, [1, 3]); var result = (yield galaxy.invoke([1, 2, 3, 4], "filter_", [_, -1, (function(unstarred__) { function F(_, val) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val) { return (yield delay(_, val)) % 2; }, 0))], 0)); deepEqual(result, [1, 3]); result = (yield galaxy.invoke(sparse(), "filter_", [_, (function(unstarred__) { function F(_, val, i) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val, i) { return (yield delay(_, val)) % 2; }, 0))], 0)); strictEqual(result.length, 2); deepEqual(result, [33, 99]); result = (yield galaxy.invoke(sparse(), "filter_", [_, -1, (function(unstarred__) { function F(_, val, i) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val, i) { return (yield delay(_, val)) % 2; }, 0))], 0)); strictEqual(result.length, 2); deepEqual(result, [33, 99]); start(); }, 0)));
asyncTest("some false", 7, galaxy.unstar(function*(_) { var result = (yield galaxy.invoke(flows, "some", [_, [1, 2, 3, 4], galaxy.unstar(function*(_, val) { return (yield delay(_, val)) < 0; }, 0)], 0)); strictEqual(result, false); var result = (yield galaxy.invoke([1, 2, 3, 4], "some_", [_, galaxy.unstar(function*(_, val) { return (yield delay(_, val)) < 0; }, 0)], 0)); strictEqual(result, false); var result = (yield galaxy.invoke([1, 2, 3, 4], "some_", [_, 2, galaxy.unstar(function*(_, val) { return (yield delay(_, val)) < 0; }, 0)], 0)); strictEqual(result, false); var result = (yield galaxy.invoke([1, 2, 3, 4], "some_", [_, { parallel: 2 }, galaxy.unstar(function*(_, val) { return (yield delay(_, val)) < 0; }, 0)], 0)); strictEqual(result, false); var result = (yield galaxy.invoke([1, 2, 3, 4], "some_", [_, -1, galaxy.unstar(function*(_, val) { return (yield delay(_, val)) < 0; }, 0)], 0)); strictEqual(result, false); result = (yield galaxy.invoke(sparse(), "some_", [_, galaxy.unstar(function*(_, val, i) { return !((yield delay(_, val)) > 20); }, 0)], 0)); strictEqual(result, false); result = (yield galaxy.invoke(sparse(), "some_", [_, -1, galaxy.unstar(function*(_, val, i) { return !((yield delay(_, val)) > 20); }, 0)], 0)); strictEqual(result, false); start(); }, 0));
asyncTest("every true", 7, galaxy.unstar(function*(_) { var result = (yield galaxy.invoke(flows, "every", [_, [1, 2, 3, 4], galaxy.unstar(function*(_, val) { return (yield delay(_, val)) < 5; }, 0)], 0)); strictEqual(result, true); var result = (yield galaxy.invoke([1, 2, 3, 4], "every_", [_, galaxy.unstar(function*(_, val) { return (yield delay(_, val)) < 5; }, 0)], 0)); strictEqual(result, true); var result = (yield galaxy.invoke([1, 2, 3, 4], "every_", [_, 2, galaxy.unstar(function*(_, val) { return (yield delay(_, val)) < 5; }, 0)], 0)); strictEqual(result, true); var result = (yield galaxy.invoke([1, 2, 3, 4], "every_", [_, { parallel: 2 }, galaxy.unstar(function*(_, val) { return (yield delay(_, val)) < 5; }, 0)], 0)); strictEqual(result, true); var result = (yield galaxy.invoke([1, 2, 3, 4], "every_", [_, -1, galaxy.unstar(function*(_, val) { return (yield delay(_, val)) < 5; }, 0)], 0)); strictEqual(result, true); result = (yield galaxy.invoke(sparse(), "every_", [_, galaxy.unstar(function*(_, val, i) { return (yield delay(_, val)) > 30; }, 0)], 0)); strictEqual(result, true); result = (yield galaxy.invoke(sparse(), "every_", [_, -1, galaxy.unstar(function*(_, val, i) { return (yield delay(_, val)) > 30; }, 0)], 0)); strictEqual(result, true); start(); }, 0));
function * H(_, code) { if (code % 2 == 0) (yield fstreamline__.invoke(null, nextTick, [_], 0)); yield ( (yield G(_, code))); }
function * G(_, code) { if (code == 5) (yield fstreamline__.invoke(null, fail, [_, code], 0)); yield ( "" + code); }
asyncTest("sort", 4, (function(unstarred__) { function F(_) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_) { var array = [1, 2, 3, 4]; (yield galaxy.invoke(flows, "sort", [_, array, (function(unstarred__) { function F(_, a, b) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, a, b) { return (yield delay(_, a - b)); }, 0))], 0)); deepEqual(array, [1, 2, 3, 4], "In order array sort ok"); (yield galaxy.invoke(array, "sort_", [_, (function(unstarred__) { function F(_, a, b) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, a, b) { return (yield delay(_, a - b)); }, 0))], 0)); deepEqual(array, [1, 2, 3, 4], "In order array sort ok"); array = [4, 3, 2, 1]; (yield galaxy.invoke(array, "sort_", [_, (function(unstarred__) { function F(_, a, b) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, a, b) { return (yield delay(_, a - b)); }, 0))], 0)); deepEqual(array, [1, 2, 3, 4], "Reverse array sort ok"); array = [3, 1, 2, 4]; (yield galaxy.invoke(array, "sort_", [_, (function(unstarred__) { function F(_, a, b) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, a, b) { return (yield delay(_, a - b)); }, 0))], 0)); deepEqual(array, [1, 2, 3, 4], "Random array sort ok"); start(); }, 0)));
asyncTest("sort", 4, galaxy.unstar(function*(_) { var array = [1, 2, 3, 4]; (yield galaxy.invoke(flows, "sort", [_, array, galaxy.unstar(function*(_, a, b) { return (yield delay(_, a - b)); }, 0)], 0)); deepEqual(array, [1, 2, 3, 4], "In order array sort ok"); (yield galaxy.invoke(array, "sort_", [_, galaxy.unstar(function*(_, a, b) { return (yield delay(_, a - b)); }, 0)], 0)); deepEqual(array, [1, 2, 3, 4], "In order array sort ok"); array = [4, 3, 2, 1]; (yield galaxy.invoke(array, "sort_", [_, galaxy.unstar(function*(_, a, b) { return (yield delay(_, a - b)); }, 0)], 0)); deepEqual(array, [1, 2, 3, 4], "Reverse array sort ok"); array = [3, 1, 2, 4]; (yield galaxy.invoke(array, "sort_", [_, galaxy.unstar(function*(_, a, b) { return (yield delay(_, a - b)); }, 0)], 0)); deepEqual(array, [1, 2, 3, 4], "Random array sort ok"); start(); }, 0));
function* A(_, code){ if (code == 1) (yield galaxy.invoke(null, fail, [_, code], 0)); if (code == 2) (yield galaxy.invoke(null, fail, [_, code], 0)); (yield galaxy.invoke(null, nextTick, [_], 0)); if (code == 3) (yield galaxy.invoke(null, fail, [_, code], 0)); for (var i = 0; i < 6; i++) { if (code == i) (yield galaxy.invoke(null, fail, [_, code], 0)); (yield galaxy.invoke(null, nextTick, [_], 0)); } if (code == 6) (yield galaxy.invoke(null, fail, [_, code], 0)); (yield galaxy.invoke(null, nextTick, [_], 0)); (yield B(_, code)); (yield galaxy.invoke(null, nextTick, [_], 0)); return "END"; }
function* T(_, fn, code, failFn){ fail = failFn; var s = "{"; try { return (yield galaxy.invoke(null, fn, [_, code], 0)); } catch (ex) { var s = ex.stack; s = s.split('\n').filter(function(l) { return l.indexOf('<<<') < 0; }).map(function(l){ var m = /^\s+at (\w+).*:(\d+)\:[^:]+$/.exec(l); if (m) return m[1] + ":" + m[2]; return l; }).join('/'); var end = s.indexOf('/T:'); return end < 0 ? s + "-- end frame missing" : s.substring(0, end); } }
asyncTest("each", 7, galaxy.unstar(function*(_) { var result = 1; (yield galaxy.invoke(flows, "each", [_, [1, 2, 3, 4], galaxy.unstar(function*(_, val) { result = result * (yield delay(_, val)); }, 0)], 0)); strictEqual(result, 24); result = 1; (yield galaxy.invoke([1, 2, 3, 4], "forEach_", [_, galaxy.unstar(function*(_, val) { var v = (yield delay(_, val)); result = result * v; }, 0)], 0)); strictEqual(result, 24); result = 1; (yield galaxy.invoke([1, 2, 3, 4], "forEach_", [_, 2, galaxy.unstar(function*(_, val) { var v = (yield delay(_, val)); result = result * v; }, 0)], 0)); strictEqual(result, 24); result = 1; (yield galaxy.invoke([1, 2, 3, 4], "forEach_", [_, { parallel: 2 }, galaxy.unstar(function*(_, val) { var v = (yield delay(_, val)); result = result * v; }, 0)], 0)); strictEqual(result, 24); result = 1; (yield galaxy.invoke([1, 2, 3, 4], "forEach_", [_, -1, galaxy.unstar(function*(_, val) { var v = (yield delay(_, val)); result = result * v; }, 0)], 0)); strictEqual(result, 24); result = ''; (yield galaxy.invoke(sparse(), "forEach_", [_, galaxy.unstar(function*(_, val, i) { var v = (yield delay(_, val)); result = result + '/' + i + ':' + v; }, 0)], 0)); strictEqual(result, '/3:33/4:44/9:99'); result = ''; (yield galaxy.invoke(sparse(), "forEach_", [_, -1, galaxy.unstar(function*(_, val, i) { var v = (yield delay(_, val)); result = result + '/' + i + ':' + v; }, 0)], 0)); strictEqual(result, '/3:33/4:44/9:99'); start(); }, 0));
function * A(_, code) { if (code == 1) (yield fstreamline__.invoke(null, fail, [_, code], 0)); if (code == 2) (yield fstreamline__.invoke(null, fail, [_, code], 0)); (yield fstreamline__.invoke(null, nextTick, [_], 0)); if (code == 3) (yield fstreamline__.invoke(null, fail, [_, code], 0)); for (var i = 0; i < 6; i++) { if (code == i) (yield fstreamline__.invoke(null, fail, [_, code], 0)); (yield fstreamline__.invoke(null, nextTick, [_], 0)); } if (code == 6) (yield fstreamline__.invoke(null, fail, [_, code], 0)); (yield fstreamline__.invoke(null, nextTick, [_], 0)); (yield B(_, code)); (yield fstreamline__.invoke(null, nextTick, [_], 0)); yield ( "END"); }
asyncTest("each", 7, (function(unstarred__) { function F(_) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_) { var result = 1; (yield galaxy.invoke(flows, "each", [_, [1, 2, 3, 4], (function(unstarred__) { function F(_, val) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val) { result = result * (yield delay(_, val)); }, 0))], 0)); strictEqual(result, 24); result = 1; (yield galaxy.invoke([1, 2, 3, 4], "forEach_", [_, (function(unstarred__) { function F(_, val) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val) { var v = (yield delay(_, val)); result = result * v; }, 0))], 0)); strictEqual(result, 24); result = 1; (yield galaxy.invoke([1, 2, 3, 4], "forEach_", [_, 2, (function(unstarred__) { function F(_, val) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val) { var v = (yield delay(_, val)); result = result * v; }, 0))], 0)); strictEqual(result, 24); result = 1; (yield galaxy.invoke([1, 2, 3, 4], "forEach_", [_, { parallel: 2 }, (function(unstarred__) { function F(_, val) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val) { var v = (yield delay(_, val)); result = result * v; }, 0))], 0)); strictEqual(result, 24); result = 1; (yield galaxy.invoke([1, 2, 3, 4], "forEach_", [_, -1, (function(unstarred__) { function F(_, val) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val) { var v = (yield delay(_, val)); result = result * v; }, 0))], 0)); strictEqual(result, 24); result = ''; (yield galaxy.invoke(sparse(), "forEach_", [_, (function(unstarred__) { function F(_, val, i) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val, i) { var v = (yield delay(_, val)); result = result + '/' + i + ':' + v; }, 0))], 0)); strictEqual(result, '/3:33/4:44/9:99'); result = ''; (yield galaxy.invoke(sparse(), "forEach_", [_, -1, (function(unstarred__) { function F(_, val, i) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_, val, i) { var v = (yield delay(_, val)); result = result + '/' + i + ':' + v; }, 0))], 0)); strictEqual(result, '/3:33/4:44/9:99'); start(); }, 0)));
this.collect = galaxy.unstar(function*(_, count, trim) { return (yield galaxy.invoke((function(callback) { if (typeof(callback) != "function") throw new Error("invalid call to collect: no callback"); var results = trim ? [] : new Array(fns.length); count = count < 0 ? fns.length : Math.min(count, fns.length); if (count == 0) return callback(null, results); var collected = 0; for (var i = 0; i < fns.length; i++) { (function(i) { funnel( function(err, result) { if (err) return callback(err); if (trim) results.push(result); else results[i] = result; if (++collected == count) return callback(null, results); }, fns[i]); })(i); } }), "call", [this, _], 1)); }, 0);
asyncTest("collectAll with limit", 1, galaxy.unstar(function*(_) { var total = 0; var peak = 0; var count = 0; function doIt(i) { return galaxy.unstar(function*(_) { count++; peak = Math.max(count, peak); total = (yield delay(_, i)) + total; count--; return 2 * i; }, 0); } var results = (yield galaxy.invoke(flows.spray([doIt(1), doIt(2), doIt(3)], 2), "collectAll", [_], 0)); deepEqual([total, peak, count, results], [6, 2, 0, [2, 4, 6]]); start(); }, 0));
asyncTest("collectAll with limit", 1, (function(unstarred__) { function F(_) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_) { var total = 0; var peak = 0; var count = 0; function doIt(i) { return (function(unstarred__) { function F(_) { return unstarred__.apply(this, arguments); }; F.__starred__0 = unstarred__.__starred__0; F.__starred__0.__unstarred__0 = F; return F;})(galaxy.unstar(function*(_) { count++; peak = Math.max(count, peak); total = (yield delay(_, i)) + total; count--; return 2 * i; }, 0)); } var results = (yield galaxy.invoke(flows.spray([doIt(1), doIt(2), doIt(3)], 2), "collectAll", [_], 0)); deepEqual([total, peak, count, results], [6, 2, 0, [2, 4, 6]]); start(); }, 0)));