Browse Source

Add number.unit32

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

13
source/lib/predicates/number.ts

@ -167,4 +167,17 @@ export class NumberPredicate extends Predicate<number> {
validator: value => is.integer(value) && is.inRange(value, [start, end])
});
}
/**
* Test a number to be in a valid range for a uint32.
*/
get uint32() {
const start = 0;
const end = 4294967295;
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])
});
}
}

8
source/test/number.ts

@ -98,3 +98,11 @@ test('number.uint16', t => {
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');
});
test('number.uint32', t => {
t.notThrows(() => m(0, m.number.uint32));
t.notThrows(() => m(4294967295, m.number.uint32));
t.throws(() => m(-1, m.number.uint32), 'Expected number to be an integer in range [0..4294967295], got -1');
t.throws(() => m(1.5, m.number.uint32), 'Expected number to be an integer in range [0..4294967295], got 1.5');
t.throws(() => m(4294967296, m.number.uint32), 'Expected number to be an integer in range [0..4294967295], got 4294967296');
});

Loading…
Cancel
Save