xref: /aosp_15_r20/external/json-schema-validator/src/test/suite/tests/draft2020-12/minContains.json (revision 78c4dd6aa35290980cdcd1623a7e337e8d021c7c)
1[
2    {
3        "description": "minContains without contains is ignored",
4        "schema": {
5            "$schema": "https://json-schema.org/draft/2020-12/schema",
6            "minContains": 1
7        },
8        "tests": [
9            {
10                "description": "one item valid against lone minContains",
11                "data": [ 1 ],
12                "valid": true
13            },
14            {
15                "description": "zero items still valid against lone minContains",
16                "data": [],
17                "valid": true
18            }
19        ]
20    },
21    {
22        "description": "minContains=1 with contains",
23        "schema": {
24            "$schema": "https://json-schema.org/draft/2020-12/schema",
25            "contains": {"const": 1},
26            "minContains": 1
27        },
28        "tests": [
29            {
30                "description": "empty data",
31                "data": [ ],
32                "valid": false
33            },
34            {
35                "description": "no elements match",
36                "data": [ 2 ],
37                "valid": false
38            },
39            {
40                "description": "single element matches, valid minContains",
41                "data": [ 1 ],
42                "valid": true
43            },
44            {
45                "description": "some elements match, valid minContains",
46                "data": [ 1, 2 ],
47                "valid": true
48            },
49            {
50                "description": "all elements match, valid minContains",
51                "data": [ 1, 1 ],
52                "valid": true
53            }
54        ]
55    },
56    {
57        "description": "minContains=2 with contains",
58        "schema": {
59            "$schema": "https://json-schema.org/draft/2020-12/schema",
60            "contains": {"const": 1},
61            "minContains": 2
62        },
63        "tests": [
64            {
65                "description": "empty data",
66                "data": [ ],
67                "valid": false
68            },
69            {
70                "description": "all elements match, invalid minContains",
71                "data": [ 1 ],
72                "valid": false
73            },
74            {
75                "description": "some elements match, invalid minContains",
76                "data": [ 1, 2 ],
77                "valid": false
78            },
79            {
80                "description": "all elements match, valid minContains (exactly as needed)",
81                "data": [ 1, 1 ],
82                "valid": true
83            },
84            {
85                "description": "all elements match, valid minContains (more than needed)",
86                "data": [ 1, 1, 1 ],
87                "valid": true
88            },
89            {
90                "description": "some elements match, valid minContains",
91                "data": [ 1, 2, 1 ],
92                "valid": true
93            }
94        ]
95    },
96    {
97        "description": "minContains=2 with contains with a decimal value",
98        "schema": {
99            "$schema": "https://json-schema.org/draft/2020-12/schema",
100            "contains": {"const": 1},
101            "minContains": 2.0
102        },
103        "tests": [
104            {
105                "description": "one element matches, invalid minContains",
106                "data": [ 1 ],
107                "valid": false
108            },
109            {
110                "description": "both elements match, valid minContains",
111                "data": [ 1, 1 ],
112                "valid": true
113            }
114        ]
115    },
116    {
117        "description": "maxContains = minContains",
118        "schema": {
119            "$schema": "https://json-schema.org/draft/2020-12/schema",
120            "contains": {"const": 1},
121            "maxContains": 2,
122            "minContains": 2
123        },
124        "tests": [
125            {
126                "description": "empty data",
127                "data": [ ],
128                "valid": false
129            },
130            {
131                "description": "all elements match, invalid minContains",
132                "data": [ 1 ],
133                "valid": false
134            },
135            {
136                "description": "all elements match, invalid maxContains",
137                "data": [ 1, 1, 1 ],
138                "valid": false
139            },
140            {
141                "description": "all elements match, valid maxContains and minContains",
142                "data": [ 1, 1 ],
143                "valid": true
144            }
145        ]
146    },
147    {
148        "description": "maxContains < minContains",
149        "schema": {
150            "$schema": "https://json-schema.org/draft/2020-12/schema",
151            "contains": {"const": 1},
152            "maxContains": 1,
153            "minContains": 3
154        },
155        "tests": [
156            {
157                "description": "empty data",
158                "data": [ ],
159                "valid": false
160            },
161            {
162                "description": "invalid minContains",
163                "data": [ 1 ],
164                "valid": false
165            },
166            {
167                "description": "invalid maxContains",
168                "data": [ 1, 1, 1 ],
169                "valid": false
170            },
171            {
172                "description": "invalid maxContains and minContains",
173                "data": [ 1, 1 ],
174                "valid": false
175            }
176        ]
177    },
178    {
179        "description": "minContains = 0",
180        "schema": {
181            "$schema": "https://json-schema.org/draft/2020-12/schema",
182            "contains": {"const": 1},
183            "minContains": 0
184        },
185        "tests": [
186            {
187                "description": "empty data",
188                "data": [ ],
189                "valid": true
190            },
191            {
192                "description": "minContains = 0 makes contains always pass",
193                "data": [ 2 ],
194                "valid": true
195            }
196        ]
197    },
198    {
199        "description": "minContains = 0 with maxContains",
200        "schema": {
201            "$schema": "https://json-schema.org/draft/2020-12/schema",
202            "contains": {"const": 1},
203            "minContains": 0,
204            "maxContains": 1
205        },
206        "tests": [
207            {
208                "description": "empty data",
209                "data": [ ],
210                "valid": true
211            },
212            {
213                "description": "not more than maxContains",
214                "data": [ 1 ],
215                "valid": true
216            },
217            {
218                "description": "too many",
219                "data": [ 1, 1 ],
220                "valid": false
221            }
222        ]
223    }
224]
225