From 848d14df3bda218bfdbf8f7293b8f7d982a786ed Mon Sep 17 00:00:00 2001 From: Jeffrey Phillips Date: Wed, 9 Aug 2017 11:04:22 -0400 Subject: [PATCH] fix(Number.isInteger) Add polyfill for Number.isInteger - #350 --- src/URI.js | 8 ++++-- test/test.js | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 2 deletions(-) diff --git a/src/URI.js b/src/URI.js index 03f2c6c1..effa0e03 100644 --- a/src/URI.js +++ b/src/URI.js @@ -77,6 +77,10 @@ return this; } + function isInteger(value) { + return /^[0-9]+$/.test(value); + } + URI.version = '1.18.11'; var p = URI.prototype; @@ -1058,8 +1062,8 @@ } var port = Number(v); - if (Number.isInteger(port) && (port > 0) && (port < 65536)) { - return; + if (isInteger(port) && (port > 0) && (port < 65536)) { + return true; } throw new TypeError('Port "' + v + '" is not a valid port'); diff --git a/test/test.js b/test/test.js index 8ebf8623..2210fc5e 100644 --- a/test/test.js +++ b/test/test.js @@ -1681,6 +1681,81 @@ deepEqual(links, expected, 'urls extracted'); equal(result, source, 'source not modified'); }); + test('ensureValidPort', function() { + var result; + + result = true; + try { + URI.ensureValidPort(8080); + } catch(e) { + result = false; + } + equal(result, true); + + result = true; + try { + URI.ensureValidPort("8080"); + } catch(e) { + result = false; + } + equal(result, true); + + result = true; + try { + URI.ensureValidPort('a8080'); + } catch(e) { + result = false; + } + equal(result, false); + + result = true; + try { + URI.ensureValidPort('8080a'); + } catch(e) { + result = false; + } + equal(result, false); + + result = true; + try { + URI.ensureValidPort('0'); + } catch(e) { + result = false; + } + equal(result, false); + + result = true; + try { + URI.ensureValidPort('-1'); + } catch(e) { + result = false; + } + equal(result, false); + + result = true; + try { + URI.ensureValidPort(65535); + } catch(e) { + result = false; + } + equal(result, true); + + result = true; + try { + URI.ensureValidPort(65536); + } catch(e) { + result = false; + } + equal(result, false); + + result = true; + try { + URI.ensureValidPort(80.1); + } catch(e) { + result = false; + } + equal(result, false); + }); test('noConflict', function() { var actual_lib = URI; // actual library; after loading, before noConflict() var unconflicted = URI.noConflict();