earljs
Version:
Ergonomic, modern and type-safe assertion library
46 lines (45 loc) • 1.24 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.toBeA = void 0;
const format_1 = require("../format");
const matchers_1 = require("../matchers");
function toBeA(control, clazz) {
const m = new matchers_1.AMatcher(clazz);
const actualFmt = (0, format_1.formatCompact)(control.actual);
const expectedFmt = formatExpectedType(clazz);
control.assert({
success: m.check(control.actual),
reason: `${actualFmt} is not ${expectedFmt}`,
negatedReason: `${actualFmt} is ${expectedFmt}`,
});
}
exports.toBeA = toBeA;
function formatExpectedType(clazz) {
if (clazz === String) {
return 'a string';
}
else if (clazz === Boolean) {
return 'a boolean';
}
else if (clazz === Number) {
return 'a number';
}
else if (clazz === BigInt) {
return 'a bigint';
}
else if (clazz === Array) {
return 'an array';
}
else if (clazz === Function) {
return 'a function';
}
else if (clazz === Object) {
return 'an object';
}
else if (clazz === Symbol) {
return 'a symbol';
}
else {
return `an instance of ${(0, format_1.formatCompact)(clazz)}`;
}
}
;