-
Notifications
You must be signed in to change notification settings - Fork 0
/
assert.js
112 lines (98 loc) · 1.86 KB
/
assert.js
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/**
* Just and identity function.
*
* @param {*} x
* @return {boolean}
*/
const is = (x) => x;
/**
* Checks whether a value does not exist.
*
* @param {*} x
* @return {boolean}
*/
const not = (x) => !x;
/**
* Strictly checks if two values are equal. Does not support Objects or Arrays.
*
* @param {*} a
* @param {*} b
* @return {boolean}
*/
const equal = (a) => (b) => a === b;
/**
* Strictly checks if two values are not equal. Does not support Objects or Arrays.
*
* @param {*} a
* @param {*} b
* @return {boolean}
*/
const notEqual = (a, b) => a !== b;
/**
* Checks if a value is greater than another.
*
* @param {*} a
* @param {*} b
* @return {boolean}
*/
const greaterThan = (a) => (b) => a > b;
/**
* Checks if a value is greater than or equal to another.
*
* @param {*} a
* @param {*} b
* @return {boolean}
*/
const greaterThanOrEqual = (a) => (b) => a >= b;
/**
* Checks if a value is less than another.
*
* @param {*} a
* @param {*} b
* @return {boolean}
*/
const lesserThan = (a, b) => a < b;
/**
* Checks if a value is less than or equal to another.
*
* @param {*} a
* @param {*} b
* @return {boolean}
*/
const lesserThanOrEqual = (a, b) => a <= b;
/**
* Evaluates if a list of arguments is true.
*
* @param {*} arguments
* @return {boolean}
*/
function all() {
const eqs = [...arguments];
if (not(eqs.length) && not(eqs[0])) return true;
else if (not(eqs[0])) return false;
return all.apply(null, eqs.slice(1));
}
/**
* Evaluates if at least one argument in a list is true.
*
* @param {*} arguments
* @return {boolean}
*/
function any() {
const eqs = [...arguments];
if (is(eqs[0])) return true;
else if (not(eqs.length)) return false;
return any.apply(null, eqs.slice(1));
}
module.exports = {
is,
not,
equal,
notEqual,
greaterThan,
greaterThanOrEqual,
lesserThan,
lesserThanOrEqual,
all,
any,
}