Skip to content

Commit b6f79ee

Browse files
authored
Merge pull request #281 from Zac-HD/unique-array-of-items
Check uniqueItems with array items
2 parents 2ebedeb + 7c20615 commit b6f79ee

File tree

5 files changed

+420
-0
lines changed

5 files changed

+420
-0
lines changed

tests/draft2019-09/uniqueItems.json

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,5 +85,89 @@
8585
"valid": false
8686
}
8787
]
88+
},
89+
{
90+
"description": "uniqueItems with an array of items",
91+
"schema": {
92+
"items": [{"type": "boolean"}, {"type": "boolean"}],
93+
"uniqueItems": true
94+
},
95+
"tests": [
96+
{
97+
"description": "[false, true] from items array is valid",
98+
"data": [false, true],
99+
"valid": true
100+
},
101+
{
102+
"description": "[true, false] from items array is valid",
103+
"data": [true, false],
104+
"valid": true
105+
},
106+
{
107+
"description": "[false, false] from items array is not valid",
108+
"data": [false, false],
109+
"valid": false
110+
},
111+
{
112+
"description": "[true, true] from items array is not valid",
113+
"data": [true, true],
114+
"valid": false
115+
},
116+
{
117+
"description": "unique array extended from [false, true] is valid",
118+
"data": [false, true, "foo", "bar"],
119+
"valid": true
120+
},
121+
{
122+
"description": "unique array extended from [true, false] is valid",
123+
"data": [true, false, "foo", "bar"],
124+
"valid": true
125+
},
126+
{
127+
"description": "non-unique array extended from [false, true] is not valid",
128+
"data": [false, true, "foo", "foo"],
129+
"valid": false
130+
},
131+
{
132+
"description": "non-unique array extended from [true, false] is not valid",
133+
"data": [true, false, "foo", "foo"],
134+
"valid": false
135+
}
136+
]
137+
},
138+
{
139+
"description": "uniqueItems with an array of items and additionalItems=false",
140+
"schema": {
141+
"items": [{"type": "boolean"}, {"type": "boolean"}],
142+
"uniqueItems": true,
143+
"additionalItems": false
144+
},
145+
"tests": [
146+
{
147+
"description": "[false, true] from items array is valid",
148+
"data": [false, true],
149+
"valid": true
150+
},
151+
{
152+
"description": "[true, false] from items array is valid",
153+
"data": [true, false],
154+
"valid": true
155+
},
156+
{
157+
"description": "[false, false] from items array is not valid",
158+
"data": [false, false],
159+
"valid": false
160+
},
161+
{
162+
"description": "[true, true] from items array is not valid",
163+
"data": [true, true],
164+
"valid": false
165+
},
166+
{
167+
"description": "extra items are invalid even if unique",
168+
"data": [false, true, null],
169+
"valid": false
170+
}
171+
]
88172
}
89173
]

tests/draft3/uniqueItems.json

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,89 @@
7575
"valid": false
7676
}
7777
]
78+
},
79+
{
80+
"description": "uniqueItems with an array of items",
81+
"schema": {
82+
"items": [{"type": "boolean"}, {"type": "boolean"}],
83+
"uniqueItems": true
84+
},
85+
"tests": [
86+
{
87+
"description": "[false, true] from items array is valid",
88+
"data": [false, true],
89+
"valid": true
90+
},
91+
{
92+
"description": "[true, false] from items array is valid",
93+
"data": [true, false],
94+
"valid": true
95+
},
96+
{
97+
"description": "[false, false] from items array is not valid",
98+
"data": [false, false],
99+
"valid": false
100+
},
101+
{
102+
"description": "[true, true] from items array is not valid",
103+
"data": [true, true],
104+
"valid": false
105+
},
106+
{
107+
"description": "unique array extended from [false, true] is valid",
108+
"data": [false, true, "foo", "bar"],
109+
"valid": true
110+
},
111+
{
112+
"description": "unique array extended from [true, false] is valid",
113+
"data": [true, false, "foo", "bar"],
114+
"valid": true
115+
},
116+
{
117+
"description": "non-unique array extended from [false, true] is not valid",
118+
"data": [false, true, "foo", "foo"],
119+
"valid": false
120+
},
121+
{
122+
"description": "non-unique array extended from [true, false] is not valid",
123+
"data": [true, false, "foo", "foo"],
124+
"valid": false
125+
}
126+
]
127+
},
128+
{
129+
"description": "uniqueItems with an array of items and additionalItems=false",
130+
"schema": {
131+
"items": [{"type": "boolean"}, {"type": "boolean"}],
132+
"uniqueItems": true,
133+
"additionalItems": false
134+
},
135+
"tests": [
136+
{
137+
"description": "[false, true] from items array is valid",
138+
"data": [false, true],
139+
"valid": true
140+
},
141+
{
142+
"description": "[true, false] from items array is valid",
143+
"data": [true, false],
144+
"valid": true
145+
},
146+
{
147+
"description": "[false, false] from items array is not valid",
148+
"data": [false, false],
149+
"valid": false
150+
},
151+
{
152+
"description": "[true, true] from items array is not valid",
153+
"data": [true, true],
154+
"valid": false
155+
},
156+
{
157+
"description": "extra items are invalid even if unique",
158+
"data": [false, true, null],
159+
"valid": false
160+
}
161+
]
78162
}
79163
]

tests/draft4/uniqueItems.json

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,5 +85,89 @@
8585
"valid": false
8686
}
8787
]
88+
},
89+
{
90+
"description": "uniqueItems with an array of items",
91+
"schema": {
92+
"items": [{"type": "boolean"}, {"type": "boolean"}],
93+
"uniqueItems": true
94+
},
95+
"tests": [
96+
{
97+
"description": "[false, true] from items array is valid",
98+
"data": [false, true],
99+
"valid": true
100+
},
101+
{
102+
"description": "[true, false] from items array is valid",
103+
"data": [true, false],
104+
"valid": true
105+
},
106+
{
107+
"description": "[false, false] from items array is not valid",
108+
"data": [false, false],
109+
"valid": false
110+
},
111+
{
112+
"description": "[true, true] from items array is not valid",
113+
"data": [true, true],
114+
"valid": false
115+
},
116+
{
117+
"description": "unique array extended from [false, true] is valid",
118+
"data": [false, true, "foo", "bar"],
119+
"valid": true
120+
},
121+
{
122+
"description": "unique array extended from [true, false] is valid",
123+
"data": [true, false, "foo", "bar"],
124+
"valid": true
125+
},
126+
{
127+
"description": "non-unique array extended from [false, true] is not valid",
128+
"data": [false, true, "foo", "foo"],
129+
"valid": false
130+
},
131+
{
132+
"description": "non-unique array extended from [true, false] is not valid",
133+
"data": [true, false, "foo", "foo"],
134+
"valid": false
135+
}
136+
]
137+
},
138+
{
139+
"description": "uniqueItems with an array of items and additionalItems=false",
140+
"schema": {
141+
"items": [{"type": "boolean"}, {"type": "boolean"}],
142+
"uniqueItems": true,
143+
"additionalItems": false
144+
},
145+
"tests": [
146+
{
147+
"description": "[false, true] from items array is valid",
148+
"data": [false, true],
149+
"valid": true
150+
},
151+
{
152+
"description": "[true, false] from items array is valid",
153+
"data": [true, false],
154+
"valid": true
155+
},
156+
{
157+
"description": "[false, false] from items array is not valid",
158+
"data": [false, false],
159+
"valid": false
160+
},
161+
{
162+
"description": "[true, true] from items array is not valid",
163+
"data": [true, true],
164+
"valid": false
165+
},
166+
{
167+
"description": "extra items are invalid even if unique",
168+
"data": [false, true, null],
169+
"valid": false
170+
}
171+
]
88172
}
89173
]

tests/draft6/uniqueItems.json

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,5 +85,89 @@
8585
"valid": false
8686
}
8787
]
88+
},
89+
{
90+
"description": "uniqueItems with an array of items",
91+
"schema": {
92+
"items": [{"type": "boolean"}, {"type": "boolean"}],
93+
"uniqueItems": true
94+
},
95+
"tests": [
96+
{
97+
"description": "[false, true] from items array is valid",
98+
"data": [false, true],
99+
"valid": true
100+
},
101+
{
102+
"description": "[true, false] from items array is valid",
103+
"data": [true, false],
104+
"valid": true
105+
},
106+
{
107+
"description": "[false, false] from items array is not valid",
108+
"data": [false, false],
109+
"valid": false
110+
},
111+
{
112+
"description": "[true, true] from items array is not valid",
113+
"data": [true, true],
114+
"valid": false
115+
},
116+
{
117+
"description": "unique array extended from [false, true] is valid",
118+
"data": [false, true, "foo", "bar"],
119+
"valid": true
120+
},
121+
{
122+
"description": "unique array extended from [true, false] is valid",
123+
"data": [true, false, "foo", "bar"],
124+
"valid": true
125+
},
126+
{
127+
"description": "non-unique array extended from [false, true] is not valid",
128+
"data": [false, true, "foo", "foo"],
129+
"valid": false
130+
},
131+
{
132+
"description": "non-unique array extended from [true, false] is not valid",
133+
"data": [true, false, "foo", "foo"],
134+
"valid": false
135+
}
136+
]
137+
},
138+
{
139+
"description": "uniqueItems with an array of items and additionalItems=false",
140+
"schema": {
141+
"items": [{"type": "boolean"}, {"type": "boolean"}],
142+
"uniqueItems": true,
143+
"additionalItems": false
144+
},
145+
"tests": [
146+
{
147+
"description": "[false, true] from items array is valid",
148+
"data": [false, true],
149+
"valid": true
150+
},
151+
{
152+
"description": "[true, false] from items array is valid",
153+
"data": [true, false],
154+
"valid": true
155+
},
156+
{
157+
"description": "[false, false] from items array is not valid",
158+
"data": [false, false],
159+
"valid": false
160+
},
161+
{
162+
"description": "[true, true] from items array is not valid",
163+
"data": [true, true],
164+
"valid": false
165+
},
166+
{
167+
"description": "extra items are invalid even if unique",
168+
"data": [false, true, null],
169+
"valid": false
170+
}
171+
]
88172
}
89173
]

0 commit comments

Comments
 (0)