@rxx/testing
Version:
Testing module for rxx.
62 lines (61 loc) • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function functor(fn, props) {
for (var prop in props) {
fn[prop] = props[prop];
}
return fn;
}
exports.graceful = functor(function (cb, done, optCallback) { return function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var error;
try {
cb.apply(null, args);
}
catch (e) {
error = e;
}
finally {
optCallback && optCallback();
done(error);
}
}; }, {
run: function (cb, done, optCallback) {
return exports.graceful(cb, done, optCallback)();
},
});
exports.nothing = function (done, optCallback) { return function () { return (optCallback && optCallback(), done()); }; };
exports.stopOnError = functor(function (cb, done, optCallback) { return function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
try {
return cb.apply(null, args);
}
catch (e) {
optCallback && optCallback();
done(e);
}
}; }, {
run: function (cb, done, optCallback) {
return exports.stopOnError(cb, done, optCallback)();
},
});
var Joiner = (function () {
function Joiner(time, cb) {
this.time = time;
this.cb = cb;
this.current = 0;
}
Joiner.prototype.notify = function () {
if (++this.current === this.time) {
this.cb();
}
};
return Joiner;
}());
exports.Joiner = Joiner;