Browse Source

Add number.unit16

c-data-types
Luke Childs 6 years ago
parent
commit
474e64db7d
  1. 15
      source/lib/predicates/number.ts
  2. 8
      source/test/number.ts

15
source/lib/predicates/number.ts

@ -148,7 +148,20 @@ export class NumberPredicate extends Predicate<number> {
get uint8() { get uint8() {
const start = 0; const start = 0;
const end = 255; const end = 255;
return this.addValidator({
message: (value, label) => `Expected ${label} to be an integer in range [${start}..${end}], got ${value}`,
validator: value => is.integer(value) && is.inRange(value, [start, end])
});
}
/**
* Test a number to be in a valid range for a uint16.
*/
get uint16() {
const start = 0;
const end = 65535;
return this.addValidator({ return this.addValidator({
message: (value, label) => `Expected ${label} to be an integer in range [${start}..${end}], got ${value}`, message: (value, label) => `Expected ${label} to be an integer in range [${start}..${end}], got ${value}`,
validator: value => is.integer(value) && is.inRange(value, [start, end]) validator: value => is.integer(value) && is.inRange(value, [start, end])

8
source/test/number.ts

@ -90,3 +90,11 @@ test('number.uint8', t => {
t.throws(() => m(1.5, m.number.uint8), 'Expected number to be an integer in range [0..255], got 1.5'); t.throws(() => m(1.5, m.number.uint8), 'Expected number to be an integer in range [0..255], got 1.5');
t.throws(() => m(256, m.number.uint8), 'Expected number to be an integer in range [0..255], got 256'); t.throws(() => m(256, m.number.uint8), 'Expected number to be an integer in range [0..255], got 256');
}); });
test('number.uint16', t => {
t.notThrows(() => m(0, m.number.uint16));
t.notThrows(() => m(65535, m.number.uint16));
t.throws(() => m(-1, m.number.uint16), 'Expected number to be an integer in range [0..65535], got -1');
t.throws(() => m(1.5, m.number.uint16), 'Expected number to be an integer in range [0..65535], got 1.5');
t.throws(() => m(65536, m.number.uint16), 'Expected number to be an integer in range [0..65535], got 65536');
});

Loading…
Cancel
Save