UNPKG

@rxx/testing

Version:
109 lines 6.15 kB
"use strict"; /** * The MIT License (MIT) * Copyright (c) Taketoshi Aono * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * @fileoverview * @author Taketoshi Aono */ Object.defineProperty(exports, "__esModule", { value: true }); /** * Create functor that is function behave like class. * @param {Function} fn The function that want to define methods. * @param {Object} props Methods. * @returns {Function} */ function functor(fn, props) { for (var prop in props) { fn[prop] = props[prop]; } return fn; } /** * Exit async function gracefully. * @param {Function} cb Async function. * @param {Function} done The Mocha async test case exit callback. * @returns {Function} The function that is notify error to mocha. */ 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 graceful function. * @param {Function} cb Async function. * @param {Function} done The Mocha async test case exit callback. * @returns {*} Function return value. */ run: function (cb, done, optCallback) { return exports.graceful(cb, done, optCallback)(); }, }); /** * Create function that exit async test case. * @param {Function} done The Mocha async test case exit callback. * @returns {Function} Function that exit async test case. */ exports.nothing = function (done, optCallback) { return function () { return (optCallback && optCallback(), done()); }; }; /** * Create function that exit test case if error thrown. * @param {Function} cb Async function. * @param {Function} done The Mocha async test case exit callback. * @returns {Function} Function that exit async test case if error thrown. */ 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 = /** @class */ (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; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN5bmMtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRzs7QUFFSDs7Ozs7R0FLRztBQUNILFNBQVMsT0FBTyxDQUFPLEVBQUssRUFBRSxLQUFRO0lBQ3BDLEtBQUssSUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1FBQ3hCLEVBQUUsQ0FBQyxJQUFXLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDL0I7SUFFRCxPQUFPLEVBQVcsQ0FBQztBQUNyQixDQUFDO0FBSUQ7Ozs7O0dBS0c7QUFDVSxRQUFBLFFBQVEsR0FBRyxPQUFPLENBQzdCLFVBQ0UsRUFBNEIsRUFDNUIsSUFBaUIsRUFDakIsV0FBdUIsSUFDcEIsT0FBQTtJQUFDLGNBQWM7U0FBZCxVQUFjLEVBQWQscUJBQWMsRUFBZCxJQUFjO1FBQWQseUJBQWM7O0lBQ2xCLElBQUksS0FBSyxDQUFDO0lBQ1YsSUFBSTtRQUNGLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ3RCO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixLQUFLLEdBQUcsQ0FBQyxDQUFDO0tBQ1g7WUFBUztRQUNSLFdBQVcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDYjtBQUNILENBQUMsRUFWSSxDQVVKLEVBQ0Q7SUFDRTs7Ozs7T0FLRztJQUNILEdBQUcsRUFBRSxVQUFDLEVBQWEsRUFBRSxJQUFpQixFQUFFLFdBQXVCO1FBQzdELE9BQUEsZ0JBQVEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxFQUFFO0lBQWpDLENBQWlDO0NBQ3BDLENBQ0YsQ0FBQztBQUVGOzs7O0dBSUc7QUFDVSxRQUFBLE9BQU8sR0FBRyxVQUFDLElBQWlCLEVBQUUsV0FBdUIsSUFBSyxPQUFBLGNBQU0sT0FBQSxDQUMzRSxXQUFXLElBQUksV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQ3JDLEVBRjRFLENBRTVFLEVBRnNFLENBRXRFLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNVLFFBQUEsV0FBVyxHQUFHLE9BQU8sQ0FDaEMsVUFDRSxFQUE0QixFQUM1QixJQUFpQixFQUNqQixXQUF1QixJQUNwQixPQUFBO0lBQUMsY0FBYztTQUFkLFVBQWMsRUFBZCxxQkFBYyxFQUFkLElBQWM7UUFBZCx5QkFBYzs7SUFDbEIsSUFBSTtRQUNGLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDN0I7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLFdBQVcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDVDtBQUNILENBQUMsRUFQSSxDQU9KLEVBQ0Q7SUFDRSxHQUFHLFlBQUMsRUFBYSxFQUFFLElBQWUsRUFBRSxXQUF1QjtRQUN6RCxPQUFPLG1CQUFXLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDO0lBQzlDLENBQUM7Q0FDRixDQUNGLENBQUM7QUFFRjtJQUdFLGdCQUFvQixJQUFJLEVBQVUsRUFBRTtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFBO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBQTtRQUY1QixZQUFPLEdBQUcsQ0FBQyxDQUFDO0lBRW1CLENBQUM7SUFFakMsdUJBQU0sR0FBYjtRQUNFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDaEMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1NBQ1g7SUFDSCxDQUFDO0lBQ0gsYUFBQztBQUFELENBQUMsQUFWRCxJQVVDO0FBVlksd0JBQU0ifQ==