1[ 2 { 3 "description": "a schema given for items", 4 "schema": { 5 "$schema": "https://json-schema.org/draft/2019-09/schema", 6 "items": {"type": "integer"} 7 }, 8 "tests": [ 9 { 10 "description": "valid items", 11 "data": [ 1, 2, 3 ], 12 "valid": true 13 }, 14 { 15 "description": "wrong type of items", 16 "data": [1, "x"], 17 "valid": false 18 }, 19 { 20 "description": "ignores non-arrays", 21 "data": {"foo" : "bar"}, 22 "valid": true 23 }, 24 { 25 "description": "JavaScript pseudo-array is valid", 26 "data": { 27 "0": "invalid", 28 "length": 1 29 }, 30 "valid": true 31 } 32 ] 33 }, 34 { 35 "description": "an array of schemas for items", 36 "schema": { 37 "$schema": "https://json-schema.org/draft/2019-09/schema", 38 "items": [ 39 {"type": "integer"}, 40 {"type": "string"} 41 ] 42 }, 43 "tests": [ 44 { 45 "description": "correct types", 46 "data": [ 1, "foo" ], 47 "valid": true 48 }, 49 { 50 "description": "wrong types", 51 "data": [ "foo", 1 ], 52 "valid": false 53 }, 54 { 55 "description": "incomplete array of items", 56 "data": [ 1 ], 57 "valid": true 58 }, 59 { 60 "description": "array with additional items", 61 "data": [ 1, "foo", true ], 62 "valid": true 63 }, 64 { 65 "description": "empty array", 66 "data": [ ], 67 "valid": true 68 }, 69 { 70 "description": "JavaScript pseudo-array is valid", 71 "data": { 72 "0": "invalid", 73 "1": "valid", 74 "length": 2 75 }, 76 "valid": true 77 } 78 ] 79 }, 80 { 81 "description": "items with boolean schema (true)", 82 "schema": { 83 "$schema": "https://json-schema.org/draft/2019-09/schema", 84 "items": true 85 }, 86 "tests": [ 87 { 88 "description": "any array is valid", 89 "data": [ 1, "foo", true ], 90 "valid": true 91 }, 92 { 93 "description": "empty array is valid", 94 "data": [], 95 "valid": true 96 } 97 ] 98 }, 99 { 100 "description": "items with boolean schema (false)", 101 "schema": { 102 "$schema": "https://json-schema.org/draft/2019-09/schema", 103 "items": false 104 }, 105 "tests": [ 106 { 107 "description": "any non-empty array is invalid", 108 "data": [ 1, "foo", true ], 109 "valid": false 110 }, 111 { 112 "description": "empty array is valid", 113 "data": [], 114 "valid": true 115 } 116 ] 117 }, 118 { 119 "description": "items with boolean schemas", 120 "schema": { 121 "$schema": "https://json-schema.org/draft/2019-09/schema", 122 "items": [true, false] 123 }, 124 "tests": [ 125 { 126 "description": "array with one item is valid", 127 "data": [ 1 ], 128 "valid": true 129 }, 130 { 131 "description": "array with two items is invalid", 132 "data": [ 1, "foo" ], 133 "valid": false 134 }, 135 { 136 "description": "empty array is valid", 137 "data": [], 138 "valid": true 139 } 140 ] 141 }, 142 { 143 "description": "items and subitems", 144 "schema": { 145 "$schema": "https://json-schema.org/draft/2019-09/schema", 146 "$defs": { 147 "item": { 148 "type": "array", 149 "additionalItems": false, 150 "items": [ 151 { "$ref": "#/$defs/sub-item" }, 152 { "$ref": "#/$defs/sub-item" } 153 ] 154 }, 155 "sub-item": { 156 "type": "object", 157 "required": ["foo"] 158 } 159 }, 160 "type": "array", 161 "additionalItems": false, 162 "items": [ 163 { "$ref": "#/$defs/item" }, 164 { "$ref": "#/$defs/item" }, 165 { "$ref": "#/$defs/item" } 166 ] 167 }, 168 "tests": [ 169 { 170 "description": "valid items", 171 "data": [ 172 [ {"foo": null}, {"foo": null} ], 173 [ {"foo": null}, {"foo": null} ], 174 [ {"foo": null}, {"foo": null} ] 175 ], 176 "valid": true 177 }, 178 { 179 "description": "too many items", 180 "data": [ 181 [ {"foo": null}, {"foo": null} ], 182 [ {"foo": null}, {"foo": null} ], 183 [ {"foo": null}, {"foo": null} ], 184 [ {"foo": null}, {"foo": null} ] 185 ], 186 "valid": false 187 }, 188 { 189 "description": "too many sub-items", 190 "data": [ 191 [ {"foo": null}, {"foo": null}, {"foo": null} ], 192 [ {"foo": null}, {"foo": null} ], 193 [ {"foo": null}, {"foo": null} ] 194 ], 195 "valid": false 196 }, 197 { 198 "description": "wrong item", 199 "data": [ 200 {"foo": null}, 201 [ {"foo": null}, {"foo": null} ], 202 [ {"foo": null}, {"foo": null} ] 203 ], 204 "valid": false 205 }, 206 { 207 "description": "wrong sub-item", 208 "data": [ 209 [ {}, {"foo": null} ], 210 [ {"foo": null}, {"foo": null} ], 211 [ {"foo": null}, {"foo": null} ] 212 ], 213 "valid": false 214 }, 215 { 216 "description": "fewer items is valid", 217 "data": [ 218 [ {"foo": null} ], 219 [ {"foo": null} ] 220 ], 221 "valid": true 222 } 223 ] 224 }, 225 { 226 "description": "nested items", 227 "schema": { 228 "$schema": "https://json-schema.org/draft/2019-09/schema", 229 "type": "array", 230 "items": { 231 "type": "array", 232 "items": { 233 "type": "array", 234 "items": { 235 "type": "array", 236 "items": { 237 "type": "number" 238 } 239 } 240 } 241 } 242 }, 243 "tests": [ 244 { 245 "description": "valid nested array", 246 "data": [[[[1]], [[2],[3]]], [[[4], [5], [6]]]], 247 "valid": true 248 }, 249 { 250 "description": "nested array with invalid type", 251 "data": [[[["1"]], [[2],[3]]], [[[4], [5], [6]]]], 252 "valid": false 253 }, 254 { 255 "description": "not deep enough", 256 "data": [[[1], [2],[3]], [[4], [5], [6]]], 257 "valid": false 258 } 259 ] 260 }, 261 { 262 "description": "single-form items with null instance elements", 263 "schema": { 264 "$schema": "https://json-schema.org/draft/2019-09/schema", 265 "items": { 266 "type": "null" 267 } 268 }, 269 "tests": [ 270 { 271 "description": "allows null elements", 272 "data": [ null ], 273 "valid": true 274 } 275 ] 276 }, 277 { 278 "description": "array-form items with null instance elements", 279 "schema": { 280 "$schema": "https://json-schema.org/draft/2019-09/schema", 281 "items": [ 282 { 283 "type": "null" 284 } 285 ] 286 }, 287 "tests": [ 288 { 289 "description": "allows null elements", 290 "data": [ null ], 291 "valid": true 292 } 293 ] 294 } 295] 296