1[
2 {
3 "description": "uniqueItems validation",
4 "schema": {"uniqueItems": true},
5 "tests": [
6 {
7 "description": "unique array of integers is valid",
8 "data": [1, 2],
9 "valid": true
10 },
11 {
12 "description": "non-unique array of integers is invalid",
13 "data": [1, 1],
14 "valid": false
15 },
16 {
17 "description": "numbers are unique if mathematically unequal",
18 "data": [1.0, 1.00, 1],
19 "valid": false
20 },
21 {
22 "description": "false is not equal to zero",
23 "data": [0, false],
24 "valid": true
25 },
26 {
27 "description": "true is not equal to one",
28 "data": [1, true],
29 "valid": true
30 },
31 {
32 "description": "unique array of objects is valid",
33 "data": [{"foo": "bar"}, {"foo": "baz"}],
34 "valid": true
35 },
36 {
37 "description": "non-unique array of objects is invalid",
38 "data": [{"foo": "bar"}, {"foo": "bar"}],
39 "valid": false
40 },
41 {
42 "description": "unique array of nested objects is valid",
43 "data": [
44 {"foo": {"bar" : {"baz" : true}}},
45 {"foo": {"bar" : {"baz" : false}}}
46 ],
47 "valid": true
48 },
49 {
50 "description": "non-unique array of nested objects is invalid",
51 "data": [
52 {"foo": {"bar" : {"baz" : true}}},
53 {"foo": {"bar" : {"baz" : true}}}
54 ],
55 "valid": false
56 },
57 {
58 "description": "unique array of arrays is valid",
59 "data": [["foo"], ["bar"]],
60 "valid": true
61 },
62 {
63 "description": "non-unique array of arrays is invalid",
64 "data": [["foo"], ["foo"]],
65 "valid": false
66 },
67 {
68 "description": "1 and true are unique",
69 "data": [1, true],
70 "valid": true
71 },
72 {
73 "description": "0 and false are unique",
74 "data": [0, false],
75 "valid": true
76 },
77 {
78 "description": "unique heterogeneous types are valid",
79 "data": [{}, [1], true, null, 1],
80 "valid": true
81 },
82 {
83 "description": "non-unique heterogeneous types are invalid",
84 "data": [{}, [1], true, null, {}, 1],
85 "valid": false
86 }
87 ]
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 ]
172 }
173]
View as plain text