coffee
Version:
Test command line on nodejs
38 lines (28 loc) • 1.03 kB
JavaScript
;
const assert = require('assert');
const debug = require('debug')('coffee:assert');
const show = require('./show');
module.exports = coffeeAssert;
function coffeeAssert(expected, actual, message) {
for (let rule of expected) {
const isOpposite = rule.isOpposite;
rule = rule.value;
if (Array.isArray(rule)) {
coffeeAssert(rule, actual, message);
continue;
}
if (rule instanceof Error) {
debug('error object %j', rule);
rule = rule.message;
}
debug('actual: `%s`, expected: `%s`, isOpposite: `%s`', show(actual), show(rule), isOpposite);
const msg = 'should' + (isOpposite ? ' not ' : ' ') + message;
if (rule instanceof RegExp) {
assert.strictEqual(rule.test(actual), !isOpposite,
msg + ' expected `' + show(rule) + '` but actual `' + show(actual) + '`');
continue;
}
assert[isOpposite ? 'notStrictEqual' : 'strictEqual'](actual, rule,
msg + ' expected `' + show(rule) + '` but actual `' + show(actual) + '`');
}
}