earljs
Version:
Ergonomic, modern and type-safe assertion library
39 lines (38 loc) • 1.24 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.ErrorMatcher = void 0;
const format_1 = require("../format");
const isEqual_1 = require("../isEqual");
const Base_1 = require("./Base");
class ErrorMatcher extends Base_1.Matcher {
constructor(errorClass = Error, message) {
super();
this.errorClass = errorClass;
this.message = message;
}
check(v) {
if (!(v instanceof this.errorClass)) {
return false;
}
if (this.message !== undefined) {
return (0, isEqual_1.isEqual)(v.message, this.message);
}
return true;
}
toString() {
return `[Error: ${this.format()}]`;
}
format() {
if (this.message === undefined) {
return `${this.errorClass.name}`;
}
return `${this.errorClass.name}(${(0, format_1.formatCompact)(this.message)})`;
}
static make(classOrMessage, message) {
if (typeof classOrMessage === 'string' || classOrMessage instanceof Base_1.Matcher) {
return new ErrorMatcher(Error, classOrMessage);
}
return new ErrorMatcher(classOrMessage, message);
}
}
exports.ErrorMatcher = ErrorMatcher;
;