Skip to content

Commit 09fd353

Browse files
Merge pull request #481 from kylef/kylef/time
Stricter time format constraints
2 parents 5732904 + 0ed2e79 commit 09fd353

File tree

3 files changed

+225
-0
lines changed

3 files changed

+225
-0
lines changed

tests/draft2019-09/optional/format/time.json

+75
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,84 @@
55
"tests": [
66
{
77
"description": "a valid time string",
8+
"data": "08:30:06Z",
9+
"valid": true
10+
},
11+
{
12+
"description": "a valid time string with leap second",
13+
"data": "23:59:60Z",
14+
"valid": true
15+
},
16+
{
17+
"description": "a valid time string with leap second with offset",
18+
"data": "15:59:60-08:00",
19+
"valid": true
20+
},
21+
{
22+
"description": "a valid time string with second fraction",
23+
"data": "23:20:50.52Z",
24+
"valid": true
25+
},
26+
{
27+
"description": "a valid time string with precise second fraction",
828
"data": "08:30:06.283185Z",
929
"valid": true
1030
},
31+
{
32+
"description": "a valid time string with plus offset",
33+
"data": "08:30:06+00:20",
34+
"valid": true
35+
},
36+
{
37+
"description": "a valid time string with minus offset",
38+
"data": "08:30:06-08:00",
39+
"valid": true
40+
},
41+
{
42+
"description": "a valid time string with case-insensitive Z",
43+
"data": "08:30:06z",
44+
"valid": true
45+
},
46+
{
47+
"description": "an invalid time string with invalid hour",
48+
"data": "24:00:00Z",
49+
"valid": false
50+
},
51+
{
52+
"description": "an invalid time string with invalid minute",
53+
"data": "00:60:00Z",
54+
"valid": false
55+
},
56+
{
57+
"description": "an invalid time string with invalid second",
58+
"data": "00:00:61Z",
59+
"valid": false
60+
},
61+
{
62+
"description": "an invalid time string with invalid leap second (wrong hour)",
63+
"data": "22:59:60Z",
64+
"valid": false
65+
},
66+
{
67+
"description": "an invalid time string with invalid leap second (wrong minute)",
68+
"data": "23:58:60Z",
69+
"valid": false
70+
},
71+
{
72+
"description": "an invalid time string with invalid time numoffset hour",
73+
"data": "01:02:03+24:00",
74+
"valid": false
75+
},
76+
{
77+
"description": "an invalid time string with invalid time numoffset minute",
78+
"data": "01:02:03+00:60",
79+
"valid": false
80+
},
81+
{
82+
"description": "an invalid time string with invalid time with both Z and numoffset",
83+
"data": "01:02:03Z+00:30",
84+
"valid": false
85+
},
1186
{
1287
"description": "an invalid time string",
1388
"data": "08:30:06 PST",

tests/draft2020-12/optional/format/time.json

+75
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,84 @@
55
"tests": [
66
{
77
"description": "a valid time string",
8+
"data": "08:30:06Z",
9+
"valid": true
10+
},
11+
{
12+
"description": "a valid time string with leap second",
13+
"data": "23:59:60Z",
14+
"valid": true
15+
},
16+
{
17+
"description": "a valid time string with leap second with offset",
18+
"data": "15:59:60-08:00",
19+
"valid": true
20+
},
21+
{
22+
"description": "a valid time string with second fraction",
23+
"data": "23:20:50.52Z",
24+
"valid": true
25+
},
26+
{
27+
"description": "a valid time string with precise second fraction",
828
"data": "08:30:06.283185Z",
929
"valid": true
1030
},
31+
{
32+
"description": "a valid time string with plus offset",
33+
"data": "08:30:06+00:20",
34+
"valid": true
35+
},
36+
{
37+
"description": "a valid time string with minus offset",
38+
"data": "08:30:06-08:00",
39+
"valid": true
40+
},
41+
{
42+
"description": "a valid time string with case-insensitive Z",
43+
"data": "08:30:06z",
44+
"valid": true
45+
},
46+
{
47+
"description": "an invalid time string with invalid hour",
48+
"data": "24:00:00Z",
49+
"valid": false
50+
},
51+
{
52+
"description": "an invalid time string with invalid minute",
53+
"data": "00:60:00Z",
54+
"valid": false
55+
},
56+
{
57+
"description": "an invalid time string with invalid second",
58+
"data": "00:00:61Z",
59+
"valid": false
60+
},
61+
{
62+
"description": "an invalid time string with invalid leap second (wrong hour)",
63+
"data": "22:59:60Z",
64+
"valid": false
65+
},
66+
{
67+
"description": "an invalid time string with invalid leap second (wrong minute)",
68+
"data": "23:58:60Z",
69+
"valid": false
70+
},
71+
{
72+
"description": "an invalid time string with invalid time numoffset hour",
73+
"data": "01:02:03+24:00",
74+
"valid": false
75+
},
76+
{
77+
"description": "an invalid time string with invalid time numoffset minute",
78+
"data": "01:02:03+00:60",
79+
"valid": false
80+
},
81+
{
82+
"description": "an invalid time string with invalid time with both Z and numoffset",
83+
"data": "01:02:03Z+00:30",
84+
"valid": false
85+
},
1186
{
1287
"description": "an invalid time string",
1388
"data": "08:30:06 PST",

tests/draft7/optional/format/time.json

+75
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,84 @@
55
"tests": [
66
{
77
"description": "a valid time string",
8+
"data": "08:30:06Z",
9+
"valid": true
10+
},
11+
{
12+
"description": "a valid time string with leap second",
13+
"data": "23:59:60Z",
14+
"valid": true
15+
},
16+
{
17+
"description": "a valid time string with leap second with offset",
18+
"data": "15:59:60-08:00",
19+
"valid": true
20+
},
21+
{
22+
"description": "a valid time string with second fraction",
23+
"data": "23:20:50.52Z",
24+
"valid": true
25+
},
26+
{
27+
"description": "a valid time string with precise second fraction",
828
"data": "08:30:06.283185Z",
929
"valid": true
1030
},
31+
{
32+
"description": "a valid time string with plus offset",
33+
"data": "08:30:06+00:20",
34+
"valid": true
35+
},
36+
{
37+
"description": "a valid time string with minus offset",
38+
"data": "08:30:06-08:00",
39+
"valid": true
40+
},
41+
{
42+
"description": "a valid time string with case-insensitive Z",
43+
"data": "08:30:06z",
44+
"valid": true
45+
},
46+
{
47+
"description": "an invalid time string with invalid hour",
48+
"data": "24:00:00Z",
49+
"valid": false
50+
},
51+
{
52+
"description": "an invalid time string with invalid minute",
53+
"data": "00:60:00Z",
54+
"valid": false
55+
},
56+
{
57+
"description": "an invalid time string with invalid second",
58+
"data": "00:00:61Z",
59+
"valid": false
60+
},
61+
{
62+
"description": "an invalid time string with invalid leap second (wrong hour)",
63+
"data": "22:59:60Z",
64+
"valid": false
65+
},
66+
{
67+
"description": "an invalid time string with invalid leap second (wrong minute)",
68+
"data": "23:58:60Z",
69+
"valid": false
70+
},
71+
{
72+
"description": "an invalid time string with invalid time numoffset hour",
73+
"data": "01:02:03+24:00",
74+
"valid": false
75+
},
76+
{
77+
"description": "an invalid time string with invalid time numoffset minute",
78+
"data": "01:02:03+00:60",
79+
"valid": false
80+
},
81+
{
82+
"description": "an invalid time string with invalid time with both Z and numoffset",
83+
"data": "01:02:03Z+00:30",
84+
"valid": false
85+
},
1186
{
1287
"description": "an invalid time string",
1388
"data": "08:30:06 PST",

0 commit comments

Comments
 (0)