xref: /aosp_15_r20/external/json-schema-validator/src/test/suite/tests/draft4/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 one empty schema",
114        "schema": {
115            "allOf": [
116                {}
117            ]
118        },
119        "tests": [
120            {
121                "description": "any data is valid",
122                "data": 1,
123                "valid": true
124            }
125        ]
126    },
127    {
128        "description": "allOf with two empty schemas",
129        "schema": {
130            "allOf": [
131                {},
132                {}
133            ]
134        },
135        "tests": [
136            {
137                "description": "any data is valid",
138                "data": 1,
139                "valid": true
140            }
141        ]
142    },
143    {
144        "description": "allOf with the first empty schema",
145        "schema": {
146            "allOf": [
147                {},
148                { "type": "number" }
149            ]
150        },
151        "tests": [
152            {
153                "description": "number is valid",
154                "data": 1,
155                "valid": true
156            },
157            {
158                "description": "string is invalid",
159                "data": "foo",
160                "valid": false
161            }
162        ]
163    },
164    {
165        "description": "allOf with the last empty schema",
166        "schema": {
167            "allOf": [
168                { "type": "number" },
169                {}
170            ]
171        },
172        "tests": [
173            {
174                "description": "number is valid",
175                "data": 1,
176                "valid": true
177            },
178            {
179                "description": "string is invalid",
180                "data": "foo",
181                "valid": false
182            }
183        ]
184    },
185    {
186        "description": "nested allOf, to check validation semantics",
187        "schema": {
188            "allOf": [
189                {
190                    "allOf": [
191                        {
192                            "type": "null"
193                        }
194                    ]
195                }
196            ]
197        },
198        "tests": [
199            {
200                "description": "null is valid",
201                "data": null,
202                "valid": true
203            },
204            {
205                "description": "anything non-null is invalid",
206                "data": 123,
207                "valid": false
208            }
209        ]
210    },
211    {
212        "description": "allOf combined with anyOf, oneOf",
213        "schema": {
214            "allOf": [ { "multipleOf": 2 } ],
215            "anyOf": [ { "multipleOf": 3 } ],
216            "oneOf": [ { "multipleOf": 5 } ]
217        },
218        "tests": [
219            {
220                "description": "allOf: false, anyOf: false, oneOf: false",
221                "data": 1,
222                "valid": false
223            },
224            {
225                "description": "allOf: false, anyOf: false, oneOf: true",
226                "data": 5,
227                "valid": false
228            },
229            {
230                "description": "allOf: false, anyOf: true, oneOf: false",
231                "data": 3,
232                "valid": false
233            },
234            {
235                "description": "allOf: false, anyOf: true, oneOf: true",
236                "data": 15,
237                "valid": false
238            },
239            {
240                "description": "allOf: true, anyOf: false, oneOf: false",
241                "data": 2,
242                "valid": false
243            },
244            {
245                "description": "allOf: true, anyOf: false, oneOf: true",
246                "data": 10,
247                "valid": false
248            },
249            {
250                "description": "allOf: true, anyOf: true, oneOf: false",
251                "data": 6,
252                "valid": false
253            },
254            {
255                "description": "allOf: true, anyOf: true, oneOf: true",
256                "data": 30,
257                "valid": true
258            }
259        ]
260    }
261]
262