From 474e64db7db6dd311b8d246c3e3d57b523ed9791 Mon Sep 17 00:00:00 2001 From: Luke Childs Date: Sat, 12 Jan 2019 14:03:01 +0700 Subject: [PATCH] Add number.unit16 --- source/lib/predicates/number.ts | 15 ++++++++++++++- source/test/number.ts | 8 ++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/source/lib/predicates/number.ts b/source/lib/predicates/number.ts index 3c4bf25..33aeb32 100644 --- a/source/lib/predicates/number.ts +++ b/source/lib/predicates/number.ts @@ -148,7 +148,20 @@ export class NumberPredicate extends Predicate { get uint8() { const start = 0; 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({ 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]) diff --git a/source/test/number.ts b/source/test/number.ts index f3a14bf..38a269d 100644 --- a/source/test/number.ts +++ b/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(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'); +});