"use strict";
var assert = require("assert");
function errorToJson(e) {
var props = Object.getOwnPropertyNames(e).concat("name");
return props.reduce(function (p, c) {
p[c] = e[c];
return p;
}, {});
}
function expectErrorEquality(e1, e2) {
var ne1 = normalizeErrorForEquality(e1);
var ne2 = normalizeErrorForEquality(e2);
expect(ne1).toEqual(ne2);
}
function normalizeErrorForEquality(e) {
if (!e) return e;
if (typeof e === "string") return omitStack(errorToJson(new Error(e)));
return omitStack(errorToJson(e));
}
function omitStack(s) {
delete s.stack;
return s;
}
function sleep(ms) {
return new Promise(function (resolve) {
setTimeout(resolve, ms);
});
}
function deepEqual(actual, expected) {
var a = normalizeError(actual);
var e = normalizeError(expected); // istanbul ignore next
if (usingJest()) expect(a).toEqual(e);else assert.deepEqual(a, e);
}
function normalizeError(v) {
if (!isError(v)) return v;
var props = Object.getOwnPropertyNames(v).concat("name");
return props.reduce(function (p, c) {
if (c === "stack") return p;
p[c] = v[c];
return p;
}, {});
}
function isError(e) {
if (!e) return false;
return e instanceof Error || e.code === "ERR_ASSERTION";
}
function usingJest() {
return typeof expect !== "undefined" && Boolean(expect.extend) && Boolean(expect.anything);
}
module.exports = {
errorToJson: errorToJson,
expectErrorEquality: expectErrorEquality,
sleep: sleep,
deepEqual: deepEqual,
isError: isError
};
//# sourceMappingURL=test-util.js.map |