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