1[ 2 { 3 "description": "simple enum validation", 4 "schema": { 5 "$schema": "https://json-schema.org/draft/2019-09/schema", 6 "enum": [1, 2, 3] 7 }, 8 "tests": [ 9 { 10 "description": "one of the enum is valid", 11 "data": 1, 12 "valid": true 13 }, 14 { 15 "description": "something else is invalid", 16 "data": 4, 17 "valid": false 18 } 19 ] 20 }, 21 { 22 "description": "heterogeneous enum validation", 23 "schema": { 24 "$schema": "https://json-schema.org/draft/2019-09/schema", 25 "enum": [6, "foo", [], true, {"foo": 12}] 26 }, 27 "tests": [ 28 { 29 "description": "one of the enum is valid", 30 "data": [], 31 "valid": true 32 }, 33 { 34 "description": "something else is invalid", 35 "data": null, 36 "valid": false 37 }, 38 { 39 "description": "objects are deep compared", 40 "data": {"foo": false}, 41 "valid": false 42 }, 43 { 44 "description": "valid object matches", 45 "data": {"foo": 12}, 46 "valid": true 47 }, 48 { 49 "description": "extra properties in object is invalid", 50 "data": {"foo": 12, "boo": 42}, 51 "valid": false 52 } 53 ] 54 }, 55 { 56 "description": "heterogeneous enum-with-null validation", 57 "schema": { 58 "$schema": "https://json-schema.org/draft/2019-09/schema", 59 "enum": [6, null] 60 }, 61 "tests": [ 62 { 63 "description": "null is valid", 64 "data": null, 65 "valid": true 66 }, 67 { 68 "description": "number is valid", 69 "data": 6, 70 "valid": true 71 }, 72 { 73 "description": "something else is invalid", 74 "data": "test", 75 "valid": false 76 } 77 ] 78 }, 79 { 80 "description": "enums in properties", 81 "schema": { 82 "$schema": "https://json-schema.org/draft/2019-09/schema", 83 "type":"object", 84 "properties": { 85 "foo": {"enum":["foo"]}, 86 "bar": {"enum":["bar"]} 87 }, 88 "required": ["bar"] 89 }, 90 "tests": [ 91 { 92 "description": "both properties are valid", 93 "data": {"foo":"foo", "bar":"bar"}, 94 "valid": true 95 }, 96 { 97 "description": "wrong foo value", 98 "data": {"foo":"foot", "bar":"bar"}, 99 "valid": false 100 }, 101 { 102 "description": "wrong bar value", 103 "data": {"foo":"foo", "bar":"bart"}, 104 "valid": false 105 }, 106 { 107 "description": "missing optional property is valid", 108 "data": {"bar":"bar"}, 109 "valid": true 110 }, 111 { 112 "description": "missing required property is invalid", 113 "data": {"foo":"foo"}, 114 "valid": false 115 }, 116 { 117 "description": "missing all properties is invalid", 118 "data": {}, 119 "valid": false 120 } 121 ] 122 }, 123 { 124 "description": "enum with escaped characters", 125 "schema": { 126 "$schema": "https://json-schema.org/draft/2019-09/schema", 127 "enum": ["foo\nbar", "foo\rbar"] 128 }, 129 "tests": [ 130 { 131 "description": "member 1 is valid", 132 "data": "foo\nbar", 133 "valid": true 134 }, 135 { 136 "description": "member 2 is valid", 137 "data": "foo\rbar", 138 "valid": true 139 }, 140 { 141 "description": "another string is invalid", 142 "data": "abc", 143 "valid": false 144 } 145 ] 146 }, 147 { 148 "description": "enum with false does not match 0", 149 "schema": { 150 "$schema": "https://json-schema.org/draft/2019-09/schema", 151 "enum": [false] 152 }, 153 "tests": [ 154 { 155 "description": "false is valid", 156 "data": false, 157 "valid": true 158 }, 159 { 160 "description": "integer zero is invalid", 161 "data": 0, 162 "valid": false 163 }, 164 { 165 "description": "float zero is invalid", 166 "data": 0.0, 167 "valid": false 168 } 169 ] 170 }, 171 { 172 "description": "enum with [false] does not match [0]", 173 "schema": { 174 "$schema": "https://json-schema.org/draft/2019-09/schema", 175 "enum": [[false]] 176 }, 177 "tests": [ 178 { 179 "description": "[false] is valid", 180 "data": [false], 181 "valid": true 182 }, 183 { 184 "description": "[0] is invalid", 185 "data": [0], 186 "valid": false 187 }, 188 { 189 "description": "[0.0] is invalid", 190 "data": [0.0], 191 "valid": false 192 } 193 ] 194 }, 195 { 196 "description": "enum with true does not match 1", 197 "schema": { 198 "$schema": "https://json-schema.org/draft/2019-09/schema", 199 "enum": [true] 200 }, 201 "tests": [ 202 { 203 "description": "true is valid", 204 "data": true, 205 "valid": true 206 }, 207 { 208 "description": "integer one is invalid", 209 "data": 1, 210 "valid": false 211 }, 212 { 213 "description": "float one is invalid", 214 "data": 1.0, 215 "valid": false 216 } 217 ] 218 }, 219 { 220 "description": "enum with [true] does not match [1]", 221 "schema": { 222 "$schema": "https://json-schema.org/draft/2019-09/schema", 223 "enum": [[true]] 224 }, 225 "tests": [ 226 { 227 "description": "[true] is valid", 228 "data": [true], 229 "valid": true 230 }, 231 { 232 "description": "[1] is invalid", 233 "data": [1], 234 "valid": false 235 }, 236 { 237 "description": "[1.0] is invalid", 238 "data": [1.0], 239 "valid": false 240 } 241 ] 242 }, 243 { 244 "description": "enum with 0 does not match false", 245 "schema": { 246 "$schema": "https://json-schema.org/draft/2019-09/schema", 247 "enum": [0] 248 }, 249 "tests": [ 250 { 251 "description": "false is invalid", 252 "data": false, 253 "valid": false 254 }, 255 { 256 "description": "integer zero is valid", 257 "data": 0, 258 "valid": true 259 }, 260 { 261 "description": "float zero is valid", 262 "data": 0.0, 263 "valid": true 264 } 265 ] 266 }, 267 { 268 "description": "enum with [0] does not match [false]", 269 "schema": { 270 "$schema": "https://json-schema.org/draft/2019-09/schema", 271 "enum": [[0]] 272 }, 273 "tests": [ 274 { 275 "description": "[false] is invalid", 276 "data": [false], 277 "valid": false 278 }, 279 { 280 "description": "[0] is valid", 281 "data": [0], 282 "valid": true 283 }, 284 { 285 "description": "[0.0] is valid", 286 "data": [0.0], 287 "valid": true 288 } 289 ] 290 }, 291 { 292 "description": "enum with 1 does not match true", 293 "schema": { 294 "$schema": "https://json-schema.org/draft/2019-09/schema", 295 "enum": [1] 296 }, 297 "tests": [ 298 { 299 "description": "true is invalid", 300 "data": true, 301 "valid": false 302 }, 303 { 304 "description": "integer one is valid", 305 "data": 1, 306 "valid": true 307 }, 308 { 309 "description": "float one is valid", 310 "data": 1.0, 311 "valid": true 312 } 313 ] 314 }, 315 { 316 "description": "enum with [1] does not match [true]", 317 "schema": { 318 "$schema": "https://json-schema.org/draft/2019-09/schema", 319 "enum": [[1]] 320 }, 321 "tests": [ 322 { 323 "description": "[true] is invalid", 324 "data": [true], 325 "valid": false 326 }, 327 { 328 "description": "[1] is valid", 329 "data": [1], 330 "valid": true 331 }, 332 { 333 "description": "[1.0] is valid", 334 "data": [1.0], 335 "valid": true 336 } 337 ] 338 }, 339 { 340 "description": "nul characters in strings", 341 "schema": { 342 "$schema": "https://json-schema.org/draft/2019-09/schema", 343 "enum": [ "hello\u0000there" ] 344 }, 345 "tests": [ 346 { 347 "description": "match string with nul", 348 "data": "hello\u0000there", 349 "valid": true 350 }, 351 { 352 "description": "do not match string lacking nul", 353 "data": "hellothere", 354 "valid": false 355 } 356 ] 357 } 358] 359