1[ 2 { 3 "description": "not", 4 "schema": { 5 "not": {"type": "integer"} 6 }, 7 "tests": [ 8 { 9 "description": "allowed", 10 "data": "foo", 11 "valid": true 12 }, 13 { 14 "description": "disallowed", 15 "data": 1, 16 "valid": false 17 } 18 ] 19 }, 20 { 21 "description": "not multiple types", 22 "schema": { 23 "not": {"type": ["integer", "boolean"]} 24 }, 25 "tests": [ 26 { 27 "description": "valid", 28 "data": "foo", 29 "valid": true 30 }, 31 { 32 "description": "mismatch", 33 "data": 1, 34 "valid": false 35 }, 36 { 37 "description": "other mismatch", 38 "data": true, 39 "valid": false 40 } 41 ] 42 }, 43 { 44 "description": "not more complex schema", 45 "schema": { 46 "not": { 47 "type": "object", 48 "properties": { 49 "foo": { 50 "type": "string" 51 } 52 } 53 } 54 }, 55 "tests": [ 56 { 57 "description": "match", 58 "data": 1, 59 "valid": true 60 }, 61 { 62 "description": "other match", 63 "data": {"foo": 1}, 64 "valid": true 65 }, 66 { 67 "description": "mismatch", 68 "data": {"foo": "bar"}, 69 "valid": false 70 } 71 ] 72 }, 73 { 74 "description": "forbidden property", 75 "schema": { 76 "properties": { 77 "foo": { 78 "not": {} 79 } 80 } 81 }, 82 "tests": [ 83 { 84 "description": "property present", 85 "data": {"foo": 1, "bar": 2}, 86 "valid": false 87 }, 88 { 89 "description": "property absent", 90 "data": {"bar": 1, "baz": 2}, 91 "valid": true 92 } 93 ] 94 }, 95 { 96 "description": "forbid everything with empty schema", 97 "schema": { "not": {} }, 98 "tests": [ 99 { 100 "description": "number is invalid", 101 "data": 1, 102 "valid": false 103 }, 104 { 105 "description": "string is invalid", 106 "data": "foo", 107 "valid": false 108 }, 109 { 110 "description": "boolean true is invalid", 111 "data": true, 112 "valid": false 113 }, 114 { 115 "description": "boolean false is invalid", 116 "data": false, 117 "valid": false 118 }, 119 { 120 "description": "null is invalid", 121 "data": null, 122 "valid": false 123 }, 124 { 125 "description": "object is invalid", 126 "data": {"foo": "bar"}, 127 "valid": false 128 }, 129 { 130 "description": "empty object is invalid", 131 "data": {}, 132 "valid": false 133 }, 134 { 135 "description": "array is invalid", 136 "data": ["foo"], 137 "valid": false 138 }, 139 { 140 "description": "empty array is invalid", 141 "data": [], 142 "valid": false 143 } 144 ] 145 }, 146 { 147 "description": "forbid everything with boolean schema true", 148 "schema": { "not": true }, 149 "tests": [ 150 { 151 "description": "number is invalid", 152 "data": 1, 153 "valid": false 154 }, 155 { 156 "description": "string is invalid", 157 "data": "foo", 158 "valid": false 159 }, 160 { 161 "description": "boolean true is invalid", 162 "data": true, 163 "valid": false 164 }, 165 { 166 "description": "boolean false is invalid", 167 "data": false, 168 "valid": false 169 }, 170 { 171 "description": "null is invalid", 172 "data": null, 173 "valid": false 174 }, 175 { 176 "description": "object is invalid", 177 "data": {"foo": "bar"}, 178 "valid": false 179 }, 180 { 181 "description": "empty object is invalid", 182 "data": {}, 183 "valid": false 184 }, 185 { 186 "description": "array is invalid", 187 "data": ["foo"], 188 "valid": false 189 }, 190 { 191 "description": "empty array is invalid", 192 "data": [], 193 "valid": false 194 } 195 ] 196 }, 197 { 198 "description": "allow everything with boolean schema false", 199 "schema": { "not": false }, 200 "tests": [ 201 { 202 "description": "number is valid", 203 "data": 1, 204 "valid": true 205 }, 206 { 207 "description": "string is valid", 208 "data": "foo", 209 "valid": true 210 }, 211 { 212 "description": "boolean true is valid", 213 "data": true, 214 "valid": true 215 }, 216 { 217 "description": "boolean false is valid", 218 "data": false, 219 "valid": true 220 }, 221 { 222 "description": "null is valid", 223 "data": null, 224 "valid": true 225 }, 226 { 227 "description": "object is valid", 228 "data": {"foo": "bar"}, 229 "valid": true 230 }, 231 { 232 "description": "empty object is valid", 233 "data": {}, 234 "valid": true 235 }, 236 { 237 "description": "array is valid", 238 "data": ["foo"], 239 "valid": true 240 }, 241 { 242 "description": "empty array is valid", 243 "data": [], 244 "valid": true 245 } 246 ] 247 }, 248 { 249 "description": "double negation", 250 "schema": { "not": { "not": {} } }, 251 "tests": [ 252 { 253 "description": "any value is valid", 254 "data": "foo", 255 "valid": true 256 } 257 ] 258 } 259] 260