-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathassertions.js
More file actions
92 lines (92 loc) · 3.79 KB
/
assertions.js
File metadata and controls
92 lines (92 loc) · 3.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const common_1 = require("./common");
const errors_1 = require("./errors");
function Assert(condition, invert, value, assertion, details) {
let name = ((invert) ? 'isNot' : 'is') + assertion.slice(2);
let messagePrefix = (invert) ? 'is' : 'is not';
let message = `${messagePrefix} ${details}`;
if ((invert) ? condition : !condition)
throw new errors_1.AssertionError(value, name, message);
}
exports.Assert = Assert;
function isSameType(target, value, invert = false) {
let targetType = common_1.objectType(target);
let valueType = common_1.objectType(value);
Assert(targetType === valueType, invert, valueType, isSameType.name, `the same type as ${common_1.objToStr(targetType)}`);
}
exports.isSameType = isSameType;
function isSameTypeName(target, value, invert = false) {
Assert(target === value, invert, value, isSameTypeName.name, `the same type as ${common_1.objToStr(target)}`);
}
exports.isSameTypeName = isSameTypeName;
function isEqual(target, value, invert = false) {
Assert(target === value, invert, value, isEqual.name, `equal to ${common_1.objToStr(target)}`);
}
exports.isEqual = isEqual;
function isSymbol(value, invert = false) {
Assert(typeof value === 'symbol', invert, value, isSymbol.name, 'a symbol');
}
exports.isSymbol = isSymbol;
function isBoolean(value, invert = false) {
Assert(typeof value === 'boolean', invert, value, isBoolean.name, 'a boolean');
}
exports.isBoolean = isBoolean;
function isString(value, invert = false) {
Assert(typeof value === 'string', invert, value, isString.name, 'a string');
}
exports.isString = isString;
function isNumber(value, invert = false) {
Assert(!Number.isNaN(value), invert, value, isNumber.name, 'a number');
}
exports.isNumber = isNumber;
function isInt(value, invert = false) {
Assert(Number.isInteger(value), invert, value, isInt.name, 'an integer');
}
exports.isInt = isInt;
function isFloat(value, invert = false) {
// todo update
Assert(!Number.isNaN(value), invert, value, isFloat.name, 'a float');
}
exports.isFloat = isFloat;
function isEqualTo(target, value, invert = false) {
Assert(value == target, invert, value, isEqualTo.name, `== ${target}`);
}
exports.isEqualTo = isEqualTo;
function isGreaterThan(target, value, invert = false) {
Assert(value > target, invert, value, isGreaterThan.name, `> ${target}`);
}
exports.isGreaterThan = isGreaterThan;
function isGreaterThanOrEqualTo(target, value, invert = false) {
Assert(value >= target, invert, value, isGreaterThanOrEqualTo.name, `>= ${target}`);
}
exports.isGreaterThanOrEqualTo = isGreaterThanOrEqualTo;
function isLessThanOrEqualTo(target, value, invert = false) {
Assert(value <= target, invert, value, isLessThanOrEqualTo.name, `>= ${target}`);
}
exports.isLessThanOrEqualTo = isLessThanOrEqualTo;
function isLessThan(target, value, invert = false) {
Assert(value < target, invert, value, isLessThan.name, `< ${target}`);
}
exports.isLessThan = isLessThan;
function isArray(value, invert = false) {
Assert(Array.isArray(value), invert, value, isArray.name, 'an array');
}
exports.isArray = isArray;
function isNull(value, invert = false) {
Assert(value == null, invert, value, isNull.name, 'null');
}
exports.isNull = isNull;
function isObject(value, invert = false) {
Assert(typeof value === 'object', invert, value, isObject.name, 'an object');
}
exports.isObject = isObject;
function isUndefined(value, invert = false) {
Assert(typeof value === 'undefined', invert, value, isUndefined.name, 'undefined');
}
exports.isUndefined = isUndefined;
function isRegEx(regEx, value, invert = false) {
Assert(regEx.test(value), invert, value, isRegEx.name, `a regular expression match`);
}
exports.isRegEx = isRegEx;
//# sourceMappingURL=assertions.js.map