| [ |
| { |
| "description": "validation of time strings", |
| "schema": { |
| "$schema": "https://json-schema.org/v1", |
| "format": "time" |
| }, |
| "tests": [ |
| { |
| "description": "all string formats ignore integers", |
| "data": 12, |
| "valid": true |
| }, |
| { |
| "description": "all string formats ignore floats", |
| "data": 13.7, |
| "valid": true |
| }, |
| { |
| "description": "all string formats ignore objects", |
| "data": {}, |
| "valid": true |
| }, |
| { |
| "description": "all string formats ignore arrays", |
| "data": [], |
| "valid": true |
| }, |
| { |
| "description": "all string formats ignore booleans", |
| "data": false, |
| "valid": true |
| }, |
| { |
| "description": "all string formats ignore nulls", |
| "data": null, |
| "valid": true |
| }, |
| { |
| "description": "a valid time string", |
| "data": "08:30:06Z", |
| "valid": true |
| }, |
| { |
| "description": "invalid time string with extra leading zeros", |
| "data": "008:030:006Z", |
| "valid": false |
| }, |
| { |
| "description": "invalid time string with no leading zero for single digit", |
| "data": "8:3:6Z", |
| "valid": false |
| }, |
| { |
| "description": "hour, minute, second must be two digits", |
| "data": "8:0030:6Z", |
| "valid": false |
| }, |
| { |
| "description": "a valid time string with leap second, Zulu", |
| "data": "23:59:60Z", |
| "valid": true |
| }, |
| { |
| "description": "invalid leap second, Zulu (wrong hour)", |
| "data": "22:59:60Z", |
| "valid": false |
| }, |
| { |
| "description": "invalid leap second, Zulu (wrong minute)", |
| "data": "23:58:60Z", |
| "valid": false |
| }, |
| { |
| "description": "valid leap second, zero time-offset", |
| "data": "23:59:60+00:00", |
| "valid": true |
| }, |
| { |
| "description": "invalid leap second, zero time-offset (wrong hour)", |
| "data": "22:59:60+00:00", |
| "valid": false |
| }, |
| { |
| "description": "invalid leap second, zero time-offset (wrong minute)", |
| "data": "23:58:60+00:00", |
| "valid": false |
| }, |
| { |
| "description": "valid leap second, positive time-offset", |
| "data": "01:29:60+01:30", |
| "valid": true |
| }, |
| { |
| "description": "valid leap second, large positive time-offset", |
| "data": "23:29:60+23:30", |
| "valid": true |
| }, |
| { |
| "description": "invalid leap second, positive time-offset (wrong hour)", |
| "data": "23:59:60+01:00", |
| "valid": false |
| }, |
| { |
| "description": "invalid leap second, positive time-offset (wrong minute)", |
| "data": "23:59:60+00:30", |
| "valid": false |
| }, |
| { |
| "description": "valid leap second, negative time-offset", |
| "data": "15:59:60-08:00", |
| "valid": true |
| }, |
| { |
| "description": "valid leap second, large negative time-offset", |
| "data": "00:29:60-23:30", |
| "valid": true |
| }, |
| { |
| "description": "invalid leap second, negative time-offset (wrong hour)", |
| "data": "23:59:60-01:00", |
| "valid": false |
| }, |
| { |
| "description": "invalid leap second, negative time-offset (wrong minute)", |
| "data": "23:59:60-00:30", |
| "valid": false |
| }, |
| { |
| "description": "a valid time string with second fraction", |
| "data": "23:20:50.52Z", |
| "valid": true |
| }, |
| { |
| "description": "a valid time string with precise second fraction", |
| "data": "08:30:06.283185Z", |
| "valid": true |
| }, |
| { |
| "description": "a valid time string with plus offset", |
| "data": "08:30:06+00:20", |
| "valid": true |
| }, |
| { |
| "description": "a valid time string with minus offset", |
| "data": "08:30:06-08:00", |
| "valid": true |
| }, |
| { |
| "description": "time with unknown local offset is valid", |
| "comment": "RFC 3339 section 4.3 (unknown local offset)", |
| "data": "12:34:56-00:00", |
| "valid": true |
| }, |
| { |
| "description": "hour, minute in time-offset must be two digits", |
| "data": "08:30:06-8:000", |
| "valid": false |
| }, |
| { |
| "description": "a valid time string with case-insensitive Z", |
| "data": "08:30:06z", |
| "valid": true |
| }, |
| { |
| "description": "an invalid time string with invalid hour", |
| "data": "24:00:00Z", |
| "valid": false |
| }, |
| { |
| "description": "an invalid time string with invalid minute", |
| "data": "00:60:00Z", |
| "valid": false |
| }, |
| { |
| "description": "an invalid time string with invalid second", |
| "data": "00:00:61Z", |
| "valid": false |
| }, |
| { |
| "description": "an invalid time string with invalid leap second (wrong hour)", |
| "data": "22:59:60Z", |
| "valid": false |
| }, |
| { |
| "description": "an invalid time string with invalid leap second (wrong minute)", |
| "data": "23:58:60Z", |
| "valid": false |
| }, |
| { |
| "description": "an invalid time string with invalid time numoffset hour", |
| "data": "01:02:03+24:00", |
| "valid": false |
| }, |
| { |
| "description": "an invalid time string with invalid time numoffset minute", |
| "data": "01:02:03+00:60", |
| "valid": false |
| }, |
| { |
| "description": "an invalid time string with invalid time with both Z and numoffset", |
| "data": "01:02:03Z+00:30", |
| "valid": false |
| }, |
| { |
| "description": "an invalid offset indicator", |
| "data": "08:30:06 PST", |
| "valid": false |
| }, |
| { |
| "description": "only RFC3339 not all of ISO 8601 are valid", |
| "data": "01:01:01,1111", |
| "valid": false |
| }, |
| { |
| "description": "no time offset", |
| "data": "12:00:00", |
| "valid": false |
| }, |
| { |
| "description": "no time offset with second fraction", |
| "data": "12:00:00.52", |
| "valid": false |
| }, |
| { |
| "description": "invalid non-ASCII '২' (a Bengali 2)", |
| "data": "1২:00:00Z", |
| "valid": false |
| }, |
| { |
| "description": "offset not starting with plus or minus", |
| "data": "08:30:06#00:20", |
| "valid": false |
| }, |
| { |
| "description": "contains letters", |
| "data": "ab:cd:ef", |
| "valid": false |
| }, |
| { |
| "description": "an invalid time string in date-time format", |
| "data": "2020-11-28T23:55:45Z", |
| "valid": false |
| } |
| ] |
| } |
| ] |