From ab4fd92de38ec5755a84857555f22c7db6249bc9 Mon Sep 17 00:00:00 2001 From: Ryan Smith <0ryansmith1994@gmail.com> Date: Sun, 22 Jan 2017 20:31:05 +0000 Subject: [PATCH] Improves tests for IRIs and Timestamps. --- dist/tests/regexValues/iri.js | 14 ++++++++++++-- dist/tests/regexValues/timestamp.js | 11 ++++++++--- src/tests/regexValues/iri.ts | 17 ++++++++++++++--- src/tests/regexValues/timestamp.ts | 18 +++++++++++++----- 4 files changed, 47 insertions(+), 13 deletions(-) diff --git a/dist/tests/regexValues/iri.js b/dist/tests/regexValues/iri.js index f08479f9..eda2335c 100644 --- a/dist/tests/regexValues/iri.js +++ b/dist/tests/regexValues/iri.js @@ -1,10 +1,20 @@ "use strict"; var itsInvalid_1 = require("../itsInvalid"); var itsValid_1 = require("../itsValid"); -var validData = 'http://www.example.com'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (test) { itsInvalid_1.default('http', 'not an IRI', test); itsInvalid_1.default(10, 'not a String', test); - itsValid_1.default(validData, test); + itsValid_1.default('http://www.example.com', test); + itsValid_1.default('http://fo-o.com/blah_blah_(wikipedia)#cite-1', test); + itsValid_1.default('https://www.example.com/foo/?bar=b%20az&inga=42&quux', test); + itsValid_1.default('http://userid:password@example.com:8080/', test); + itsValid_1.default('http://userid:password@example.com/', test); + itsValid_1.default('http://142.42.1.1:8080/', test); + itsValid_1.default('http://foo.com/unicode_(✪)_in_parens', test); + itsValid_1.default('http://foo.com/(something)?after=parens', test); + itsValid_1.default('http://code.google.com/events/#&product=browser', test); + itsValid_1.default('ftp://foo.bar/baz', test); + itsValid_1.default('http://⌘➡例子.测试✪उदाहरण.परीकإختبار/䨹', test); + itsValid_1.default('http://-.~_!$&\'()*+,;=:%40:80%2f::::::@example.com', test); }; diff --git a/dist/tests/regexValues/timestamp.js b/dist/tests/regexValues/timestamp.js index 2df5d2c4..965d5dd1 100644 --- a/dist/tests/regexValues/timestamp.js +++ b/dist/tests/regexValues/timestamp.js @@ -1,11 +1,16 @@ "use strict"; var itsInvalid_1 = require("../itsInvalid"); var itsValid_1 = require("../itsValid"); -var validData = '20090131T230000-0100'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function (test) { - itsInvalid_1.default('2009-01-31T230000-01:00', 'not a Timestamp', test); itsInvalid_1.default(10, 'not a String', test); - itsValid_1.default(validData, test); + itsValid_1.default('20090131T230000-0100', test); itsValid_1.default('2009-01-31T23:00:00-01:00', test); + itsValid_1.default('20170101', test); + itsValid_1.default('2017-01-01', test); + itsInvalid_1.default('2009-01-31T230000-01:00', 'not a Timestamp', test); + itsInvalid_1.default('2017', 'not a Timestamp', test); + itsInvalid_1.default('2017-01', 'not a Timestamp', test); + itsInvalid_1.default('2013-99-99T04:13:00+00:00', 'not a Timestamp', test); + itsValid_1.default('0785-10-10T04:13:00+00:00', test); }; diff --git a/src/tests/regexValues/iri.ts b/src/tests/regexValues/iri.ts index a6b7fe96..055e4972 100644 --- a/src/tests/regexValues/iri.ts +++ b/src/tests/regexValues/iri.ts @@ -2,10 +2,21 @@ import Test from '../helpers/test'; import itsInvalid from '../itsInvalid'; import itsValid from '../itsValid'; -const validData = 'http://www.example.com'; - export default (test: Test) => { itsInvalid('http', 'not an IRI', test); itsInvalid(10, 'not a String', test); - itsValid(validData, test); + itsValid('http://www.example.com', test); + + // https://mathiasbynens.be/demo/url-regex + itsValid('http://fo-o.com/blah_blah_(wikipedia)#cite-1', test); + itsValid('https://www.example.com/foo/?bar=b%20az&inga=42&quux', test); + itsValid('http://userid:password@example.com:8080/', test); + itsValid('http://userid:password@example.com/', test); + itsValid('http://142.42.1.1:8080/', test); + itsValid('http://foo.com/unicode_(✪)_in_parens', test); + itsValid('http://foo.com/(something)?after=parens', test); + itsValid('http://code.google.com/events/#&product=browser', test); + itsValid('ftp://foo.bar/baz', test); + itsValid('http://⌘➡例子.测试✪उदाहरण.परीकإختبار/䨹', test); + itsValid('http://-.~_!$&\'()*+,;=:%40:80%2f::::::@example.com', test); }; diff --git a/src/tests/regexValues/timestamp.ts b/src/tests/regexValues/timestamp.ts index 8783a29a..39212dc7 100644 --- a/src/tests/regexValues/timestamp.ts +++ b/src/tests/regexValues/timestamp.ts @@ -2,11 +2,19 @@ import Test from '../helpers/test'; import itsInvalid from '../itsInvalid'; import itsValid from '../itsValid'; -const validData = '20090131T230000-0100'; - export default (test: Test) => { - itsInvalid('2009-01-31T230000-01:00', 'not a Timestamp', test); itsInvalid(10, 'not a String', test); - itsValid(validData, test); - itsValid('2009-01-31T23:00:00-01:00', test); // Extended + + itsValid('20090131T230000-0100', test); // Basic format + itsValid('2009-01-31T23:00:00-01:00', test); // Extended format + itsValid('20170101', test); // Date basic format + itsValid('2017-01-01', test); // Date extended format + + itsInvalid('2009-01-31T230000-01:00', 'not a Timestamp', test); + itsInvalid('2017', 'not a Timestamp', test); + itsInvalid('2017-01', 'not a Timestamp', test); + + // http://stackoverflow.com/questions/12756159 + itsInvalid('2013-99-99T04:13:00+00:00', 'not a Timestamp', test); + itsValid('0785-10-10T04:13:00+00:00', test); };