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