UNPKG

luhn-generator

Version:

A generator of numbers that passes the validation of Luhn algorithm or Luhn formula, also known as the 'modulus 10' or 'mod 10' algorithm

105 lines (87 loc) 2.52 kB
'use strict'; /** * @module Progress */ /** * Module dependencies. */ var Base = require('./base'); var constants = require('../runner').constants; var EVENT_RUN_BEGIN = constants.EVENT_RUN_BEGIN; var EVENT_TEST_END = constants.EVENT_TEST_END; var EVENT_RUN_END = constants.EVENT_RUN_END; var inherits = require('../utils').inherits; var color = Base.color; var cursor = Base.cursor; /** * Expose `Progress`. */ exports = module.exports = Progress; /** * General progress bar color. */ Base.colors.progress = 90; /** * Constructs a new `Progress` reporter instance. * * @public * @class * @memberof Mocha.reporters * @extends Mocha.reporters.Base * @param {Runner} runner - Instance triggers reporter actions. * @param {Object} [options] - runner options */ function Progress(runner, options) { Base.call(this, runner, options); var self = this; var width = (Base.window.width * 0.5) | 0; var total = runner.total; var complete = 0; var lastN = -1; // default chars options = options || {}; var reporterOptions = options.reporterOptions || {}; options.open = reporterOptions.open || '['; options.complete = reporterOptions.complete || '▬'; options.incomplete = reporterOptions.incomplete || Base.symbols.dot; options.close = reporterOptions.close || ']'; options.verbose = reporterOptions.verbose || false; // tests started runner.on(EVENT_RUN_BEGIN, function() { process.stdout.write('\n'); cursor.hide(); }); // tests complete runner.on(EVENT_TEST_END, function() { complete++; var percent = complete / total; var n = (width * percent) | 0; var i = width - n; if (n === lastN && !options.verbose) { // Don't re-render the line if it hasn't changed return; } lastN = n; cursor.CR(); process.stdout.write('\u001b[J'); process.stdout.write(color('progress', ' ' + options.open)); process.stdout.write(Array(n).join(options.complete)); process.stdout.write(Array(i).join(options.incomplete)); process.stdout.write(color('progress', options.close)); if (options.verbose) { process.stdout.write(color('progress', ' ' + complete + ' of ' + total)); } }); // tests are complete, output some stats // and the failures if any runner.once(EVENT_RUN_END, function() { cursor.show(); process.stdout.write('\n'); self.epilogue(); }); } /** * Inherit from `Base.prototype`. */ inherits(Progress, Base); Progress.description = 'a progress bar';