xref: /aosp_15_r20/external/json-schema-validator/src/test/suite/tests/draft2019-09/items.json (revision 78c4dd6aa35290980cdcd1623a7e337e8d021c7c)
1[
2    {
3        "description": "a schema given for items",
4        "schema": {
5            "$schema": "https://json-schema.org/draft/2019-09/schema",
6            "items": {"type": "integer"}
7        },
8        "tests": [
9            {
10                "description": "valid items",
11                "data": [ 1, 2, 3 ],
12                "valid": true
13            },
14            {
15                "description": "wrong type of items",
16                "data": [1, "x"],
17                "valid": false
18            },
19            {
20                "description": "ignores non-arrays",
21                "data": {"foo" : "bar"},
22                "valid": true
23            },
24            {
25                "description": "JavaScript pseudo-array is valid",
26                "data": {
27                    "0": "invalid",
28                    "length": 1
29                },
30                "valid": true
31            }
32        ]
33    },
34    {
35        "description": "an array of schemas for items",
36        "schema": {
37            "$schema": "https://json-schema.org/draft/2019-09/schema",
38            "items": [
39                {"type": "integer"},
40                {"type": "string"}
41            ]
42        },
43        "tests": [
44            {
45                "description": "correct types",
46                "data": [ 1, "foo" ],
47                "valid": true
48            },
49            {
50                "description": "wrong types",
51                "data": [ "foo", 1 ],
52                "valid": false
53            },
54            {
55                "description": "incomplete array of items",
56                "data": [ 1 ],
57                "valid": true
58            },
59            {
60                "description": "array with additional items",
61                "data": [ 1, "foo", true ],
62                "valid": true
63            },
64            {
65                "description": "empty array",
66                "data": [ ],
67                "valid": true
68            },
69            {
70                "description": "JavaScript pseudo-array is valid",
71                "data": {
72                    "0": "invalid",
73                    "1": "valid",
74                    "length": 2
75                },
76                "valid": true
77            }
78        ]
79    },
80    {
81        "description": "items with boolean schema (true)",
82        "schema": {
83            "$schema": "https://json-schema.org/draft/2019-09/schema",
84            "items": true
85        },
86        "tests": [
87            {
88                "description": "any array is valid",
89                "data": [ 1, "foo", true ],
90                "valid": true
91            },
92            {
93                "description": "empty array is valid",
94                "data": [],
95                "valid": true
96            }
97        ]
98    },
99    {
100        "description": "items with boolean schema (false)",
101        "schema": {
102            "$schema": "https://json-schema.org/draft/2019-09/schema",
103            "items": false
104        },
105        "tests": [
106            {
107                "description": "any non-empty array is invalid",
108                "data": [ 1, "foo", true ],
109                "valid": false
110            },
111            {
112                "description": "empty array is valid",
113                "data": [],
114                "valid": true
115            }
116        ]
117    },
118    {
119        "description": "items with boolean schemas",
120        "schema": {
121            "$schema": "https://json-schema.org/draft/2019-09/schema",
122            "items": [true, false]
123        },
124        "tests": [
125            {
126                "description": "array with one item is valid",
127                "data": [ 1 ],
128                "valid": true
129            },
130            {
131                "description": "array with two items is invalid",
132                "data": [ 1, "foo" ],
133                "valid": false
134            },
135            {
136                "description": "empty array is valid",
137                "data": [],
138                "valid": true
139            }
140        ]
141    },
142    {
143        "description": "items and subitems",
144        "schema": {
145            "$schema": "https://json-schema.org/draft/2019-09/schema",
146            "$defs": {
147                "item": {
148                    "type": "array",
149                    "additionalItems": false,
150                    "items": [
151                        { "$ref": "#/$defs/sub-item" },
152                        { "$ref": "#/$defs/sub-item" }
153                    ]
154                },
155                "sub-item": {
156                    "type": "object",
157                    "required": ["foo"]
158                }
159            },
160            "type": "array",
161            "additionalItems": false,
162            "items": [
163                { "$ref": "#/$defs/item" },
164                { "$ref": "#/$defs/item" },
165                { "$ref": "#/$defs/item" }
166            ]
167        },
168        "tests": [
169            {
170                "description": "valid items",
171                "data": [
172                    [ {"foo": null}, {"foo": null} ],
173                    [ {"foo": null}, {"foo": null} ],
174                    [ {"foo": null}, {"foo": null} ]
175                ],
176                "valid": true
177            },
178            {
179                "description": "too many items",
180                "data": [
181                    [ {"foo": null}, {"foo": null} ],
182                    [ {"foo": null}, {"foo": null} ],
183                    [ {"foo": null}, {"foo": null} ],
184                    [ {"foo": null}, {"foo": null} ]
185                ],
186                "valid": false
187            },
188            {
189                "description": "too many sub-items",
190                "data": [
191                    [ {"foo": null}, {"foo": null}, {"foo": null} ],
192                    [ {"foo": null}, {"foo": null} ],
193                    [ {"foo": null}, {"foo": null} ]
194                ],
195                "valid": false
196            },
197            {
198                "description": "wrong item",
199                "data": [
200                    {"foo": null},
201                    [ {"foo": null}, {"foo": null} ],
202                    [ {"foo": null}, {"foo": null} ]
203                ],
204                "valid": false
205            },
206            {
207                "description": "wrong sub-item",
208                "data": [
209                    [ {}, {"foo": null} ],
210                    [ {"foo": null}, {"foo": null} ],
211                    [ {"foo": null}, {"foo": null} ]
212                ],
213                "valid": false
214            },
215            {
216                "description": "fewer items is valid",
217                "data": [
218                    [ {"foo": null} ],
219                    [ {"foo": null} ]
220                ],
221                "valid": true
222            }
223        ]
224    },
225    {
226        "description": "nested items",
227        "schema": {
228            "$schema": "https://json-schema.org/draft/2019-09/schema",
229            "type": "array",
230            "items": {
231                "type": "array",
232                "items": {
233                    "type": "array",
234                    "items": {
235                        "type": "array",
236                        "items": {
237                            "type": "number"
238                        }
239                    }
240                }
241            }
242        },
243        "tests": [
244            {
245                "description": "valid nested array",
246                "data": [[[[1]], [[2],[3]]], [[[4], [5], [6]]]],
247                "valid": true
248            },
249            {
250                "description": "nested array with invalid type",
251                "data": [[[["1"]], [[2],[3]]], [[[4], [5], [6]]]],
252                "valid": false
253            },
254            {
255                "description": "not deep enough",
256                "data": [[[1], [2],[3]], [[4], [5], [6]]],
257                "valid": false
258            }
259        ]
260    },
261    {
262        "description": "single-form items with null instance elements",
263        "schema": {
264            "$schema": "https://json-schema.org/draft/2019-09/schema",
265            "items": {
266                "type": "null"
267            }
268        },
269        "tests": [
270            {
271                "description": "allows null elements",
272                "data": [ null ],
273                "valid": true
274            }
275        ]
276    },
277    {
278        "description": "array-form items with null instance elements",
279        "schema": {
280            "$schema": "https://json-schema.org/draft/2019-09/schema",
281            "items": [
282                {
283                    "type": "null"
284                }
285            ]
286        },
287        "tests": [
288            {
289                "description": "allows null elements",
290                "data": [ null ],
291                "valid": true
292            }
293        ]
294    }
295]
296