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