assertthat
Version:
assertthat provides fluent TDD.
136 lines (135 loc) • 5.37 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.assertAnyIsOfType = void 0;
const dispel_1 = require("../../dispel/dispel");
const prettyPrint_1 = require("../../prettyPrint/typeAware/prettyPrint");
const errors_1 = require("../../errors");
const defekt_1 = require("defekt");
const typedescriptor_1 = require("typedescriptor");
const assertAnyIsOfType = function (actual, expected) {
const dispelledActual = (0, dispel_1.dispel)(actual);
switch (expected) {
case 'array': {
if (!(0, typedescriptor_1.isArray)(actual)) {
return (0, defekt_1.error)(new errors_1.AssertionFailed({
message: 'The value is not of type array.',
actual: (0, prettyPrint_1.prettyPrint)(dispelledActual)
}));
}
break;
}
case 'boolean': {
if (!(0, typedescriptor_1.isBoolean)(actual)) {
return (0, defekt_1.error)(new errors_1.AssertionFailed({
message: 'The value is not of type boolean.',
actual: (0, prettyPrint_1.prettyPrint)(dispelledActual)
}));
}
break;
}
case 'error': {
if (!(0, typedescriptor_1.isError)(actual)) {
return (0, defekt_1.error)(new errors_1.AssertionFailed({
message: 'The value is not of type error.',
actual: (0, prettyPrint_1.prettyPrint)(dispelledActual)
}));
}
break;
}
case 'function': {
if (!(0, typedescriptor_1.isFunction)(actual)) {
return (0, defekt_1.error)(new errors_1.AssertionFailed({
message: 'The value is not of type function.',
actual: (0, prettyPrint_1.prettyPrint)(dispelledActual)
}));
}
break;
}
case 'map': {
if (!(0, typedescriptor_1.isMap)(actual)) {
return (0, defekt_1.error)(new errors_1.AssertionFailed({
message: 'The value is not of type map.',
actual: (0, prettyPrint_1.prettyPrint)(dispelledActual)
}));
}
break;
}
case 'null': {
if (!(0, typedescriptor_1.isNull)(actual)) {
return (0, defekt_1.error)(new errors_1.AssertionFailed({
message: 'The value is not of type null.',
actual: (0, prettyPrint_1.prettyPrint)(dispelledActual)
}));
}
break;
}
case 'number': {
if (!(0, typedescriptor_1.isNumber)(actual)) {
return (0, defekt_1.error)(new errors_1.AssertionFailed({
message: 'The value is not of type number.',
actual: (0, prettyPrint_1.prettyPrint)(dispelledActual)
}));
}
break;
}
case 'result': {
if (!(0, defekt_1.isResult)(actual)) {
return (0, defekt_1.error)(new errors_1.AssertionFailed({
message: 'The value is not of type result.',
actual: (0, prettyPrint_1.prettyPrint)(dispelledActual)
}));
}
break;
}
case 'set': {
if (!(0, typedescriptor_1.isSet)(actual)) {
return (0, defekt_1.error)(new errors_1.AssertionFailed({
message: 'The value is not of type set.',
actual: (0, prettyPrint_1.prettyPrint)(dispelledActual)
}));
}
break;
}
case 'string': {
if (!(0, typedescriptor_1.isString)(actual)) {
return (0, defekt_1.error)(new errors_1.AssertionFailed({
message: 'The value is not of type string.',
actual: (0, prettyPrint_1.prettyPrint)(dispelledActual)
}));
}
break;
}
case 'symbol': {
if (!(0, typedescriptor_1.isSymbol)(actual)) {
return (0, defekt_1.error)(new errors_1.AssertionFailed({
message: 'The value is not of type symbol.',
actual: (0, prettyPrint_1.prettyPrint)(dispelledActual)
}));
}
break;
}
case 'undefined': {
if (!(0, typedescriptor_1.isUndefined)(actual)) {
return (0, defekt_1.error)(new errors_1.AssertionFailed({
message: 'The value is not of type undefined.',
actual: (0, prettyPrint_1.prettyPrint)(dispelledActual)
}));
}
break;
}
case 'object': {
if (!(0, typedescriptor_1.isObject)(actual)) {
return (0, defekt_1.error)(new errors_1.AssertionFailed({
message: 'The value is not of type object.',
actual: (0, prettyPrint_1.prettyPrint)(dispelledActual)
}));
}
break;
}
default: {
throw new errors_1.InvalidOperation();
}
}
return (0, defekt_1.value)();
};
exports.assertAnyIsOfType = assertAnyIsOfType;