UNPKG

earljs

Version:

Ergonomic, modern and type-safe assertion library

46 lines (45 loc) 1.24 kB
"use strict"; 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)}`; } }