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