xref: /aosp_15_r20/external/json-schema-validator/src/test/suite/tests/draft2020-12/not.json (revision 78c4dd6aa35290980cdcd1623a7e337e8d021c7c)
1[
2    {
3        "description": "not",
4        "schema": {
5            "$schema": "https://json-schema.org/draft/2020-12/schema",
6            "not": {"type": "integer"}
7        },
8        "tests": [
9            {
10                "description": "allowed",
11                "data": "foo",
12                "valid": true
13            },
14            {
15                "description": "disallowed",
16                "data": 1,
17                "valid": false
18            }
19        ]
20    },
21    {
22        "description": "not multiple types",
23        "schema": {
24            "$schema": "https://json-schema.org/draft/2020-12/schema",
25            "not": {"type": ["integer", "boolean"]}
26        },
27        "tests": [
28            {
29                "description": "valid",
30                "data": "foo",
31                "valid": true
32            },
33            {
34                "description": "mismatch",
35                "data": 1,
36                "valid": false
37            },
38            {
39                "description": "other mismatch",
40                "data": true,
41                "valid": false
42            }
43        ]
44    },
45    {
46        "description": "not more complex schema",
47        "schema": {
48            "$schema": "https://json-schema.org/draft/2020-12/schema",
49            "not": {
50                "type": "object",
51                "properties": {
52                    "foo": {
53                        "type": "string"
54                    }
55                }
56             }
57        },
58        "tests": [
59            {
60                "description": "match",
61                "data": 1,
62                "valid": true
63            },
64            {
65                "description": "other match",
66                "data": {"foo": 1},
67                "valid": true
68            },
69            {
70                "description": "mismatch",
71                "data": {"foo": "bar"},
72                "valid": false
73            }
74        ]
75    },
76    {
77        "description": "forbidden property",
78        "schema": {
79            "$schema": "https://json-schema.org/draft/2020-12/schema",
80            "properties": {
81                "foo": {
82                    "not": {}
83                }
84            }
85        },
86        "tests": [
87            {
88                "description": "property present",
89                "data": {"foo": 1, "bar": 2},
90                "valid": false
91            },
92            {
93                "description": "property absent",
94                "data": {"bar": 1, "baz": 2},
95                "valid": true
96            }
97        ]
98    },
99    {
100        "description": "forbid everything with empty schema",
101        "schema": {
102            "$schema": "https://json-schema.org/draft/2020-12/schema",
103            "not": {}
104        },
105        "tests": [
106            {
107                "description": "number is invalid",
108                "data": 1,
109                "valid": false
110            },
111            {
112                "description": "string is invalid",
113                "data": "foo",
114                "valid": false
115            },
116            {
117                "description": "boolean true is invalid",
118                "data": true,
119                "valid": false
120            },
121            {
122                "description": "boolean false is invalid",
123                "data": false,
124                "valid": false
125            },
126            {
127                "description": "null is invalid",
128                "data": null,
129                "valid": false
130            },
131            {
132                "description": "object is invalid",
133                "data": {"foo": "bar"},
134                "valid": false
135            },
136            {
137                "description": "empty object is invalid",
138                "data": {},
139                "valid": false
140            },
141            {
142                "description": "array is invalid",
143                "data": ["foo"],
144                "valid": false
145            },
146            {
147                "description": "empty array is invalid",
148                "data": [],
149                "valid": false
150            }
151        ]
152    },
153    {
154        "description": "forbid everything with boolean schema true",
155        "schema": {
156            "$schema": "https://json-schema.org/draft/2020-12/schema",
157            "not": true
158        },
159        "tests": [
160            {
161                "description": "number is invalid",
162                "data": 1,
163                "valid": false
164            },
165            {
166                "description": "string is invalid",
167                "data": "foo",
168                "valid": false
169            },
170            {
171                "description": "boolean true is invalid",
172                "data": true,
173                "valid": false
174            },
175            {
176                "description": "boolean false is invalid",
177                "data": false,
178                "valid": false
179            },
180            {
181                "description": "null is invalid",
182                "data": null,
183                "valid": false
184            },
185            {
186                "description": "object is invalid",
187                "data": {"foo": "bar"},
188                "valid": false
189            },
190            {
191                "description": "empty object is invalid",
192                "data": {},
193                "valid": false
194            },
195            {
196                "description": "array is invalid",
197                "data": ["foo"],
198                "valid": false
199            },
200            {
201                "description": "empty array is invalid",
202                "data": [],
203                "valid": false
204            }
205        ]
206    },
207    {
208        "description": "allow everything with boolean schema false",
209        "schema": {
210            "$schema": "https://json-schema.org/draft/2020-12/schema",
211            "not": false
212        },
213        "tests": [
214            {
215                "description": "number is valid",
216                "data": 1,
217                "valid": true
218            },
219            {
220                "description": "string is valid",
221                "data": "foo",
222                "valid": true
223            },
224            {
225                "description": "boolean true is valid",
226                "data": true,
227                "valid": true
228            },
229            {
230                "description": "boolean false is valid",
231                "data": false,
232                "valid": true
233            },
234            {
235                "description": "null is valid",
236                "data": null,
237                "valid": true
238            },
239            {
240                "description": "object is valid",
241                "data": {"foo": "bar"},
242                "valid": true
243            },
244            {
245                "description": "empty object is valid",
246                "data": {},
247                "valid": true
248            },
249            {
250                "description": "array is valid",
251                "data": ["foo"],
252                "valid": true
253            },
254            {
255                "description": "empty array is valid",
256                "data": [],
257                "valid": true
258            }
259        ]
260    },
261    {
262        "description": "double negation",
263        "schema": {
264            "$schema": "https://json-schema.org/draft/2020-12/schema",
265            "not": { "not": {} }
266        },
267        "tests": [
268            {
269                "description": "any value is valid",
270                "data": "foo",
271                "valid": true
272            }
273        ]
274    },
275    {
276        "description": "collect annotations inside a 'not', even if collection is disabled",
277        "schema": {
278            "$schema": "https://json-schema.org/draft/2020-12/schema",
279            "not": {
280                "$comment": "this subschema must still produce annotations internally, even though the 'not' will ultimately discard them",
281                "anyOf": [
282                    true,
283                    { "properties": { "foo": true } }
284                ],
285                "unevaluatedProperties": false
286            }
287        },
288        "tests": [
289            {
290                "description": "unevaluated property",
291                "data": { "bar": 1 },
292                "valid": true
293            },
294            {
295                "description": "annotations are still collected inside a 'not'",
296                "data": { "foo": 1 },
297                "valid": false
298            }
299        ]
300     }
301]
302