xref: /aosp_15_r20/external/json-schema-validator/src/test/suite/tests/draft2019-09/enum.json (revision 78c4dd6aa35290980cdcd1623a7e337e8d021c7c)
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