StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics
https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
3.9 KiB
134 lines
3.9 KiB
(function() {
|
|
'use strict';
|
|
|
|
var CHALK_RESULT = '_CHALK_RESULT_';
|
|
|
|
var _ = require('lodash');
|
|
var chai = require('chai');
|
|
var sinon = require('sinon');
|
|
var sinonChai = require('sinon-chai');
|
|
var expect = chai.expect;
|
|
var path = require('path');
|
|
var requireSubvert = require('require-subvert')(__dirname);
|
|
|
|
chai.use(sinonChai);
|
|
|
|
var sandbox = sinon.sandbox.create();
|
|
var short = 'test';
|
|
var shortWithSub = 'test sub';
|
|
|
|
|
|
var fullpath = path.resolve(__dirname);
|
|
var stubs = {};
|
|
stubs[fullpath + '/' + short] = {};
|
|
stubs[fullpath + '/' + _.kebabCase(shortWithSub)] = {};
|
|
|
|
describe('alias (exported module)', function() {
|
|
var alias, chalk;
|
|
|
|
beforeEach(function() {
|
|
chalk = {
|
|
bold: {
|
|
blue: sandbox.stub().returns(CHALK_RESULT),
|
|
red: sandbox.stub().returns(CHALK_RESULT)
|
|
}
|
|
};
|
|
|
|
requireSubvert.subvert('chalk', chalk);
|
|
requireSubvert.require('../index');
|
|
alias = require('../index');
|
|
});
|
|
|
|
afterEach(function() {
|
|
sandbox.restore();
|
|
});
|
|
|
|
describe('when the input data is valid', function() {
|
|
var _alias;
|
|
|
|
beforeEach(function() {
|
|
_alias = _.partial(alias, short, __dirname);
|
|
|
|
sandbox.spy(process.stdout, 'write');
|
|
sandbox.spy(console, 'log');
|
|
});
|
|
|
|
it('if options.message is false should log nothing', function() {
|
|
_alias({message: false});
|
|
expect(process.stdout.write).not.to.have.been.called;
|
|
expect(console.log).not.to.have.been.called;
|
|
});
|
|
|
|
describe('if options.message is not false', function() {
|
|
it('should use the provided color if it exists', function() {
|
|
var color = 'red';
|
|
|
|
quiet([
|
|
_.partial(_alias, {color: color}),
|
|
_.partial(expectInfo, null, color)
|
|
]);
|
|
});
|
|
|
|
it('should print the provided message if it is a string', function() {
|
|
var message = '_MESSAGE_';
|
|
|
|
quiet([
|
|
_.partial(_alias, {message: message}),
|
|
_.partial(expectInfo, message)
|
|
]);
|
|
});
|
|
|
|
it('should print the default message if one is not provided', function() {
|
|
quiet([_alias, expectInfo]);
|
|
});
|
|
|
|
it('should print the default message options.message is `true`', function() {
|
|
quiet([_.partial(_alias, {message: true}), expectInfo]);
|
|
});
|
|
|
|
it('should print a blank line', function() {
|
|
quiet([_alias]);
|
|
expect(console.log).to.have.been.calledWith();
|
|
});
|
|
|
|
it('should support git style sub-commands', function() {
|
|
var sub = _.partial(alias, shortWithSub, __dirname);
|
|
quiet([sub]);
|
|
expect(_.partial(quiet, [])).not.to.throw();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('when the input data is not valid', function() {
|
|
it('should throw an error if `short` is not provided', function() {
|
|
expect(alias).to.throw('Missing `short`');
|
|
});
|
|
|
|
it('should throw an error if `shortPath` is not provided', function() {
|
|
expect(_.partial(alias, short)).to.throw('Missing `shortPath`');
|
|
});
|
|
});
|
|
|
|
// Make the expectations each time to validate they don't change when options change
|
|
function expectInfo(message, color) {
|
|
message = message || 'You can also use ' + CHALK_RESULT + ' as an alias';
|
|
color = color || 'blue';
|
|
|
|
expect(chalk.bold[color]).to.have.been.calledWith('[INFO]:');
|
|
expect(process.stdout.write).to.have.been.calledWith(CHALK_RESULT + ' ');
|
|
expect(process.stdout.write).to.have.been.calledWith(message);
|
|
}
|
|
|
|
// needed because we have to be careful when to suppress stdout as to not suppress errors / test output
|
|
function quiet(funcs) {
|
|
var restore = process.stdout.write;
|
|
process.stdout.write = sandbox.spy();
|
|
|
|
_.each(funcs, function(func) {
|
|
func();
|
|
});
|
|
|
|
process.stdout.write = restore;
|
|
}
|
|
});
|
|
})();
|
|
|