Add default 0 as lower bound if range is a number. Update tests

This commit is contained in:
glhrmv 2017-09-25 15:07:22 +01:00
parent be967d4d01
commit b30101d07e
3 changed files with 17 additions and 3 deletions

View file

@ -148,6 +148,12 @@ const typedArrayTypes = new Set([
]); ]);
is.typedArray = x => typedArrayTypes.has(getObjectType(x)); is.typedArray = x => typedArrayTypes.has(getObjectType(x));
is.inRange = (x, arr) => is.array(arr) && (x >= Math.min.apply(Math, arr)) && (x <= Math.max.apply(Math, arr)); is.inRange = (x, range) => {
if (is.number(range)) {
return (x >= Math.min(0, range)) && (x <= Math.max(range, 0));
}
return (is.array(range)) && (x >= Math.min.apply(Math, range)) && (x <= Math.max.apply(Math, range));
};
module.exports = is; module.exports = is;

View file

@ -123,6 +123,8 @@ Check to see if the value is within a given range, for example `is.inRange(3, [0
The range supplied can be an array of any size, though this will only check for The range supplied can be an array of any size, though this will only check for
the minimum and maximum values in it. the minimum and maximum values in it.
If `range` is a number (e.g., `is.inRange(3, 10)`), it will be treated as a range of 0 to `range`.
## FAQ ## FAQ
### Why yet another type checking module? ### Why yet another type checking module?

10
test.js
View file

@ -296,7 +296,13 @@ test('is.typedArray', t => {
test('is.inRange', t => { test('is.inRange', t => {
const x = 3; const x = 3;
const arr = [0, 5];
t.true(m.inRange(x, arr)); t.true(m.inRange(x, [0, 5]));
t.true(m.inRange(x, [5, 0]));
t.true(m.inRange(x, [-5, 5]));
t.true(m.inRange(x, [5, -5]));
t.false(m.inRange(x, [4, 8]));
t.true(m.inRange(x, 10));
t.false(m.inRange(x, 2));
}); });