mirror of https://github.com/lukechilds/ow.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
353 lines
7.7 KiB
353 lines
7.7 KiB
import test from 'ava';
|
|
import ow from '../source';
|
|
|
|
test('number', t => {
|
|
t.notThrows(() => {
|
|
ow(1, ow.number);
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow('12' as any, ow.number);
|
|
}, 'Expected argument to be of type `number` but received type `string`');
|
|
|
|
t.throws(() => {
|
|
ow('12' as any, 'foo', ow.number);
|
|
}, 'Expected `foo` to be of type `number` but received type `string`');
|
|
});
|
|
|
|
test('number.inRange', t => {
|
|
t.notThrows(() => {
|
|
ow(10, ow.number.inRange(0, 20));
|
|
});
|
|
|
|
t.notThrows(() => {
|
|
ow(10, ow.number.inRange(10, 20));
|
|
});
|
|
t.notThrows(() => {
|
|
ow(10, ow.number.inRange(0, 10));
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow(10 as any, ow.number.inRange(0, 9));
|
|
}, 'Expected number to be in range [0..9], got 10');
|
|
|
|
t.throws(() => {
|
|
ow(10 as any, 'foo', ow.number.inRange(0, 9));
|
|
}, 'Expected number `foo` to be in range [0..9], got 10');
|
|
|
|
t.throws(() => {
|
|
ow(10 as any, ow.number.inRange(11, 20));
|
|
}, 'Expected number to be in range [11..20], got 10');
|
|
});
|
|
|
|
test('number.greaterThan', t => {
|
|
t.notThrows(() => {
|
|
ow(10, ow.number.greaterThan(5));
|
|
});
|
|
|
|
t.notThrows(() => {
|
|
ow(10, ow.number.greaterThan(9));
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow(10 as any, ow.number.greaterThan(10));
|
|
}, 'Expected number to be greater than 10, got 10');
|
|
|
|
t.throws(() => {
|
|
ow(10 as any, ow.number.greaterThan(11));
|
|
}, 'Expected number to be greater than 11, got 10');
|
|
|
|
t.throws(() => {
|
|
ow(10 as any, ow.number.greaterThan(20));
|
|
}, 'Expected number to be greater than 20, got 10');
|
|
});
|
|
|
|
test('number.greaterThanOrEqual', t => {
|
|
t.notThrows(() => {
|
|
ow(10, ow.number.greaterThanOrEqual(5));
|
|
});
|
|
|
|
t.notThrows(() => {
|
|
ow(10, ow.number.greaterThanOrEqual(10));
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow(10 as any, ow.number.greaterThanOrEqual(11));
|
|
}, 'Expected number to be greater than or equal to 11, got 10');
|
|
|
|
t.throws(() => {
|
|
ow(10 as any, ow.number.greaterThanOrEqual(20));
|
|
}, 'Expected number to be greater than or equal to 20, got 10');
|
|
});
|
|
|
|
test('number.lessThan', t => {
|
|
t.notThrows(() => {
|
|
ow(10, ow.number.lessThan(20));
|
|
});
|
|
|
|
t.notThrows(() => {
|
|
ow(10, ow.number.lessThan(11));
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow(10 as any, ow.number.lessThan(10));
|
|
}, 'Expected number to be less than 10, got 10');
|
|
|
|
t.throws(() => {
|
|
ow(10 as any, ow.number.lessThan(9));
|
|
}, 'Expected number to be less than 9, got 10');
|
|
|
|
t.throws(() => {
|
|
ow(10 as any, ow.number.lessThan(0));
|
|
}, 'Expected number to be less than 0, got 10');
|
|
});
|
|
|
|
test('number.lessThanOrEqual', t => {
|
|
t.notThrows(() => {
|
|
ow(10, ow.number.lessThanOrEqual(20));
|
|
});
|
|
|
|
t.notThrows(() => {
|
|
ow(10, ow.number.lessThanOrEqual(10));
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow(10 as any, ow.number.lessThanOrEqual(9));
|
|
}, 'Expected number to be less than or equal to 9, got 10');
|
|
|
|
t.throws(() => {
|
|
ow(10 as any, ow.number.lessThanOrEqual(0));
|
|
}, 'Expected number to be less than or equal to 0, got 10');
|
|
});
|
|
|
|
test('number.equal', t => {
|
|
t.notThrows(() => {
|
|
ow(10, ow.number.equal(10));
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow(10 as any, ow.number.equal(5));
|
|
}, 'Expected number to be equal to 5, got 10');
|
|
});
|
|
|
|
test('number.oneOf', t => {
|
|
t.notThrows(() => {
|
|
ow(10, ow.number.oneOf([5, 10]));
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow(10, ow.number.oneOf([5, 6]));
|
|
}, 'Expected number to be one of `[5,6]`, got 10');
|
|
|
|
t.throws(() => {
|
|
ow(10, 'hello', ow.number.oneOf([5, 6]));
|
|
}, 'Expected number `hello` to be one of `[5,6]`, got 10');
|
|
|
|
t.throws(() => {
|
|
ow(10, ow.number.oneOf([5, 6, 7, 8, 9]));
|
|
}, 'Expected number to be one of `[5,6,7,8,9]`, got 10');
|
|
|
|
t.throws(() => {
|
|
ow(10, ow.number.oneOf([5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18]));
|
|
}, 'Expected number to be one of `[5,6,7,8,9,11,12,13,14,15,…+3 more]`, got 10');
|
|
});
|
|
|
|
test('number.integer', t => {
|
|
t.notThrows(() => {
|
|
ow(10, ow.number.integer);
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow(10.1 as any, ow.number.integer);
|
|
}, 'Expected number to be an integer, got 10.1');
|
|
});
|
|
|
|
test('number.finite', t => {
|
|
t.notThrows(() => {
|
|
ow(10, ow.number.finite);
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow(Infinity as any, ow.number.finite);
|
|
}, 'Expected number to be finite, got Infinity');
|
|
});
|
|
|
|
test('number.infinite', t => {
|
|
t.notThrows(() => {
|
|
ow(Infinity, ow.number.infinite);
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow(10 as any, ow.number.infinite);
|
|
}, 'Expected number to be infinite, got 10');
|
|
});
|
|
|
|
test('number.positive', t => {
|
|
t.notThrows(() => {
|
|
ow(1, ow.number.positive);
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow(-1 as any, ow.number.positive);
|
|
}, 'Expected number to be positive, got -1');
|
|
});
|
|
|
|
test('number.negative', t => {
|
|
t.notThrows(() => {
|
|
ow(-1, ow.number.negative);
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow(1 as any, ow.number.negative);
|
|
}, 'Expected number to be negative, got 1');
|
|
});
|
|
|
|
test('number.integerOrInfinite', t => {
|
|
t.notThrows(() => {
|
|
ow(10, ow.number.integerOrInfinite);
|
|
});
|
|
|
|
t.notThrows(() => {
|
|
ow(Infinity, ow.number.integerOrInfinite);
|
|
});
|
|
|
|
t.notThrows(() => {
|
|
ow(-10, ow.number.integerOrInfinite);
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow(3.14, ow.number.integerOrInfinite);
|
|
}, 'Expected number to be an integer or infinite, got 3.14');
|
|
});
|
|
|
|
test('number.uint8', t => {
|
|
t.notThrows(() => {
|
|
ow(0, ow.number.uint8);
|
|
});
|
|
|
|
t.notThrows(() => {
|
|
ow(255, ow.number.uint8);
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow(-1, ow.number.uint8);
|
|
}, 'Expected number to be in range [0..255], got -1');
|
|
|
|
t.throws(() => {
|
|
ow(1.5, ow.number.uint8);
|
|
}, 'Expected number to be an integer, got 1.5');
|
|
|
|
t.throws(() => {
|
|
ow(256, ow.number.uint8);
|
|
}, 'Expected number to be in range [0..255], got 256');
|
|
});
|
|
|
|
test('number.uint16', t => {
|
|
t.notThrows(() => {
|
|
ow(0, ow.number.uint16);
|
|
});
|
|
|
|
t.notThrows(() => {
|
|
ow(65535, ow.number.uint16);
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow(-1, ow.number.uint16);
|
|
}, 'Expected number to be in range [0..65535], got -1');
|
|
|
|
t.throws(() => {
|
|
ow(1.5, ow.number.uint16);
|
|
}, 'Expected number to be an integer, got 1.5');
|
|
|
|
t.throws(() => {
|
|
ow(65536, ow.number.uint16);
|
|
}, 'Expected number to be in range [0..65535], got 65536');
|
|
});
|
|
|
|
test('number.uint32', t => {
|
|
t.notThrows(() => {
|
|
ow(0, ow.number.uint32);
|
|
});
|
|
|
|
t.notThrows(() => {
|
|
ow(4294967295, ow.number.uint32);
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow(-1, ow.number.uint32);
|
|
}, 'Expected number to be in range [0..4294967295], got -1');
|
|
|
|
t.throws(() => {
|
|
ow(1.5, ow.number.uint32);
|
|
}, 'Expected number to be an integer, got 1.5');
|
|
|
|
t.throws(() => {
|
|
ow(4294967296, ow.number.uint32);
|
|
}, 'Expected number to be in range [0..4294967295], got 4294967296');
|
|
});
|
|
|
|
test('number.int8', t => {
|
|
t.notThrows(() => {
|
|
ow(-128, ow.number.int8);
|
|
});
|
|
|
|
t.notThrows(() => {
|
|
ow(127, ow.number.int8);
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow(-129, ow.number.int8);
|
|
}, 'Expected number to be in range [-128..127], got -129');
|
|
|
|
t.throws(() => {
|
|
ow(1.5, ow.number.int8);
|
|
}, 'Expected number to be an integer, got 1.5');
|
|
|
|
t.throws(() => {
|
|
ow(128, ow.number.int8);
|
|
}, 'Expected number to be in range [-128..127], got 128');
|
|
});
|
|
|
|
test('number.int16', t => {
|
|
t.notThrows(() => {
|
|
ow(-32768, ow.number.int16);
|
|
});
|
|
|
|
t.notThrows(() => {
|
|
ow(32767, ow.number.int16);
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow(-32769, ow.number.int16);
|
|
}, 'Expected number to be in range [-32768..32767], got -32769');
|
|
|
|
t.throws(() => {
|
|
ow(1.5, ow.number.int16);
|
|
}, 'Expected number to be an integer, got 1.5');
|
|
|
|
t.throws(() => {
|
|
ow(32768, ow.number.int16);
|
|
}, 'Expected number to be in range [-32768..32767], got 32768');
|
|
});
|
|
|
|
test('number.int32', t => {
|
|
t.notThrows(() => {
|
|
ow(-2147483648, ow.number.int32);
|
|
});
|
|
|
|
t.notThrows(() => {
|
|
ow(2147483647, ow.number.int32);
|
|
});
|
|
|
|
t.throws(() => {
|
|
ow(-2147483649, ow.number.int32);
|
|
}, 'Expected number to be in range [-2147483648..2147483647], got -2147483649');
|
|
|
|
t.throws(() => {
|
|
ow(1.5, ow.number.int32);
|
|
}, 'Expected number to be an integer, got 1.5');
|
|
|
|
t.throws(() => {
|
|
ow(2147483648, ow.number.int32);
|
|
}, 'Expected number to be in range [-2147483648..2147483647], got 2147483648');
|
|
});
|
|
|