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