Skip to content

Commit 7ba95f3

Browse files
karenetheridgessilverman
authored andcommitted
add tests for keywords maxContains, minContains
new in draft2019-09
1 parent 2f2e7cf commit 7ba95f3

File tree

2 files changed

+251
-0
lines changed

2 files changed

+251
-0
lines changed

tests/draft2019-09/maxContains.json

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
[
2+
{
3+
"description": "maxContains without contains is ignored",
4+
"schema": {
5+
"maxContains": 1
6+
},
7+
"tests": [
8+
{
9+
"description": "one item valid against lone maxContains",
10+
"data": [ 1 ],
11+
"valid": true
12+
},
13+
{
14+
"description": "two items still valid against lone maxContains",
15+
"data": [ 1, 2 ],
16+
"valid": true
17+
}
18+
]
19+
},
20+
{
21+
"description": "maxContains with contains",
22+
"schema": {
23+
"contains": {"const": 1},
24+
"maxContains": 1
25+
},
26+
"tests": [
27+
{
28+
"description": "empty data",
29+
"data": [ ],
30+
"valid": false
31+
},
32+
{
33+
"description": "all elements match, valid maxContains",
34+
"data": [ 1 ],
35+
"valid": true
36+
},
37+
{
38+
"description": "all elements match, invalid maxContains",
39+
"data": [ 1, 1 ],
40+
"valid": false
41+
},
42+
{
43+
"description": "some elements match, valid maxContains",
44+
"data": [ 1, 2 ],
45+
"valid": true
46+
},
47+
{
48+
"description": "some elements match, invalid maxContains",
49+
"data": [ 1, 2, 1 ],
50+
"valid": false
51+
}
52+
]
53+
},
54+
{
55+
"description": "minContains < maxContains",
56+
"schema": {
57+
"contains": {"const": 1},
58+
"minContains": 1,
59+
"maxContains": 3
60+
},
61+
"tests": [
62+
{
63+
"description": "actual < minContains < maxContains",
64+
"data": [ ],
65+
"valid": false
66+
},
67+
{
68+
"description": "minContains < actual < maxContains",
69+
"data": [ 1, 1 ],
70+
"valid": true
71+
},
72+
{
73+
"description": "minContains < maxContains < actual",
74+
"data": [ 1, 1, 1, 1 ],
75+
"valid": false
76+
}
77+
]
78+
}
79+
]

tests/draft2019-09/minContains.json

Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
[
2+
{
3+
"description": "minContains without contains is ignored",
4+
"schema": {
5+
"minContains": 1
6+
},
7+
"tests": [
8+
{
9+
"description": "one item valid against lone minContains",
10+
"data": [ 1 ],
11+
"valid": true
12+
},
13+
{
14+
"description": "zero items still valid against lone minContains",
15+
"data": [],
16+
"valid": true
17+
}
18+
]
19+
},
20+
{
21+
"description": "minContains=1 with contains",
22+
"schema": {
23+
"contains": {"const": 1},
24+
"minContains": 1
25+
},
26+
"tests": [
27+
{
28+
"description": "empty data",
29+
"data": [ ],
30+
"valid": false
31+
},
32+
{
33+
"description": "no elements match",
34+
"data": [ 2 ],
35+
"valid": false
36+
},
37+
{
38+
"description": "single element matches, valid minContains",
39+
"data": [ 1 ],
40+
"valid": true
41+
},
42+
{
43+
"description": "some elements match, valid minContains",
44+
"data": [ 1, 2 ],
45+
"valid": true
46+
},
47+
{
48+
"description": "all elements match, valid minContains",
49+
"data": [ 1, 1 ],
50+
"valid": true
51+
}
52+
]
53+
},
54+
{
55+
"description": "minContains=2 with contains",
56+
"schema": {
57+
"contains": {"const": 1},
58+
"minContains": 2
59+
},
60+
"tests": [
61+
{
62+
"description": "empty data",
63+
"data": [ ],
64+
"valid": false
65+
},
66+
{
67+
"description": "all elements match, invalid minContains",
68+
"data": [ 1 ],
69+
"valid": false
70+
},
71+
{
72+
"description": "some elements match, invalid minContains",
73+
"data": [ 1, 2 ],
74+
"valid": false
75+
},
76+
{
77+
"description": "all elements match, valid minContains (exactly as needed)",
78+
"data": [ 1, 1 ],
79+
"valid": true
80+
},
81+
{
82+
"description": "all elements match, valid minContains (more than needed)",
83+
"data": [ 1, 1, 1 ],
84+
"valid": true
85+
},
86+
{
87+
"description": "some elements match, valid minContains",
88+
"data": [ 1, 2, 1 ],
89+
"valid": true
90+
}
91+
]
92+
},
93+
{
94+
"description": "maxContains = minContains",
95+
"schema": {
96+
"contains": {"const": 1},
97+
"maxContains": 2,
98+
"minContains": 2
99+
},
100+
"tests": [
101+
{
102+
"description": "empty data",
103+
"data": [ ],
104+
"valid": false
105+
},
106+
{
107+
"description": "all elements match, invalid minContains",
108+
"data": [ 1 ],
109+
"valid": false
110+
},
111+
{
112+
"description": "all elements match, invalid maxContains",
113+
"data": [ 1, 1, 1 ],
114+
"valid": false
115+
},
116+
{
117+
"description": "all elements match, valid maxContains and minContains",
118+
"data": [ 1, 1 ],
119+
"valid": true
120+
}
121+
]
122+
},
123+
{
124+
"description": "maxContains < minContains",
125+
"schema": {
126+
"contains": {"const": 1},
127+
"maxContains": 1,
128+
"minContains": 3
129+
},
130+
"tests": [
131+
{
132+
"description": "empty data",
133+
"data": [ ],
134+
"valid": false
135+
},
136+
{
137+
"description": "invalid minContains",
138+
"data": [ 1 ],
139+
"valid": false
140+
},
141+
{
142+
"description": "invalid maxContains",
143+
"data": [ 1, 1, 1 ],
144+
"valid": false
145+
},
146+
{
147+
"description": "invalid maxContains and minContains",
148+
"data": [ 1, 1 ],
149+
"valid": false
150+
}
151+
]
152+
},
153+
{
154+
"description": "minContains = 0",
155+
"schema": {
156+
"contains": {"const": 1},
157+
"minContains": 0
158+
},
159+
"tests": [
160+
{
161+
"description": "empty data",
162+
"data": [ ],
163+
"valid": true
164+
},
165+
{
166+
"description": "minContains = 0 makes contains always pass",
167+
"data": [ 2 ],
168+
"valid": true
169+
}
170+
]
171+
}
172+
]

0 commit comments

Comments
 (0)