fcoin/test/util/assert.js
2017-08-10 11:17:10 -07:00

77 lines
1.6 KiB
JavaScript

'use strict';
const _assert = require('assert');
const util = require('util');
const assert = function assert(ok, message) {
return _assert(ok, message);
};
Object.setPrototypeOf(assert, _assert);
assert.isBuffer = function isBuffer(value, message) {
if (!Buffer.isBuffer(value)) {
throw new assert.AssertionError({
mesage: message,
actual: typeOf(value),
expected: 'buffer',
operator: '===',
stackStartFunction: isBuffer
});
}
};
assert.bufferEqual = function bufferEqual(actual, expected, message) {
assert.isBuffer(actual, message);
assert.isBuffer(expected, message);
if (!actual.equals(expected)) {
throw new assert.AssertionError({
mesage: message,
actual: actual.toString('hex'),
expected: expected.toString('hex'),
operator: '===',
stackStartFunction: bufferEqual
});
}
};
assert.notBufferEqual = function notBufferEqual(actual, expected, message) {
assert.isBuffer(actual, message);
assert.isBuffer(expected, message);
if (actual.equals(expected)) {
throw new assert.AssertionError({
mesage: message,
actual: actual.toString('hex'),
expected: expected.toString('hex'),
operator: '!==',
stackStartFunction: notBufferEqual
});
}
};
function typeOf(value) {
if (value === null)
return 'null';
if (util.isDate(value))
return 'date';
if (util.isRegExp(value))
return 'regexp';
if (util.isError(value))
return 'error';
if (Array.isArray(value))
return 'array';
if (Buffer.isBuffer(value))
return 'buffer';
return typeof value;
}
module.exports = assert;