xref: /aosp_15_r20/external/json-schema-validator/src/test/suite/tests/draft4/additionalItems.json (revision 78c4dd6aa35290980cdcd1623a7e337e8d021c7c)
1[
2    {
3        "description": "additionalItems as schema",
4        "schema": {
5            "items": [{}],
6            "additionalItems": {"type": "integer"}
7        },
8        "tests": [
9            {
10                "description": "additional items match schema",
11                "data": [ null, 2, 3, 4 ],
12                "valid": true
13            },
14            {
15                "description": "additional items do not match schema",
16                "data": [ null, 2, 3, "foo" ],
17                "valid": false
18            }
19        ]
20    },
21    {
22        "description": "when items is schema, additionalItems does nothing",
23        "schema": {
24            "items": {},
25            "additionalItems": false
26        },
27        "tests": [
28            {
29                "description": "all items match schema",
30                "data": [ 1, 2, 3, 4, 5 ],
31                "valid": true
32            }
33        ]
34    },
35    {
36        "description": "array of items with no additionalItems permitted",
37        "schema": {
38            "items": [{}, {}, {}],
39            "additionalItems": false
40        },
41        "tests": [
42            {
43                "description": "empty array",
44                "data": [ ],
45                "valid": true
46            },
47            {
48                "description": "fewer number of items present (1)",
49                "data": [ 1 ],
50                "valid": true
51            },
52            {
53                "description": "fewer number of items present (2)",
54                "data": [ 1, 2 ],
55                "valid": true
56            },
57            {
58                "description": "equal number of items present",
59                "data": [ 1, 2, 3 ],
60                "valid": true
61            },
62            {
63                "description": "additional items are not permitted",
64                "data": [ 1, 2, 3, 4 ],
65                "valid": false
66            }
67        ]
68    },
69    {
70        "description": "additionalItems as false without items",
71        "schema": {"additionalItems": false},
72        "tests": [
73            {
74                "description":
75                    "items defaults to empty schema so everything is valid",
76                "data": [ 1, 2, 3, 4, 5 ],
77                "valid": true
78            },
79            {
80                "description": "ignores non-arrays",
81                "data": {"foo" : "bar"},
82                "valid": true
83            }
84        ]
85    },
86    {
87        "description": "additionalItems are allowed by default",
88        "schema": {"items": [{"type": "integer"}]},
89        "tests": [
90            {
91                "description": "only the first item is validated",
92                "data": [1, "foo", false],
93                "valid": true
94            }
95        ]
96    },
97    {
98        "description": "additionalItems does not look in applicators, valid case",
99        "schema": {
100            "allOf": [
101                { "items": [ { "type": "integer" } ] }
102            ],
103            "additionalItems": { "type": "boolean" }
104        },
105        "tests": [
106            {
107                "description": "items defined in allOf are not examined",
108                "data": [ 1, null ],
109                "valid": true
110            }
111        ]
112    },
113    {
114        "description": "additionalItems does not look in applicators, invalid case",
115        "schema": {
116            "allOf": [
117                { "items": [ { "type": "integer" }, { "type": "string" } ] }
118            ],
119            "items": [ {"type": "integer" } ],
120            "additionalItems": { "type": "boolean" }
121        },
122        "tests": [
123            {
124                "description": "items defined in allOf are not examined",
125                "data": [ 1, "hello" ],
126                "valid": false
127            }
128        ]
129    },
130    {
131        "description": "items validation adjusts the starting index for additionalItems",
132        "schema": {
133            "items": [ { "type": "string" } ],
134            "additionalItems": { "type": "integer" }
135        },
136        "tests": [
137            {
138                "description": "valid items",
139                "data": [ "x", 2, 3 ],
140                "valid": true
141            },
142            {
143                "description": "wrong type of second item",
144                "data": [ "x", "y" ],
145                "valid": false
146            }
147        ]
148    },
149    {
150        "description": "additionalItems with heterogeneous array",
151        "schema": {
152            "items": [{}],
153            "additionalItems": false
154        },
155        "tests": [
156            {
157                "description": "heterogeneous invalid instance",
158                "data": [ "foo", "bar", 37 ],
159                "valid": false
160            },
161            {
162                "description": "valid instance",
163                "data": [ null ],
164                "valid": true
165            }
166        ]
167    },
168    {
169        "description": "additionalItems with null instance elements",
170        "schema": {
171            "additionalItems": {
172                "type": "null"
173            }
174        },
175        "tests": [
176            {
177                "description": "allows null elements",
178                "data": [ null ],
179                "valid": true
180            }
181        ]
182    }
183]
184