UNPKG

8.84 kBJSONView Raw
1[
2 {
3 "given": {"foo": [{"name": "a"}, {"name": "b"}]},
4 "cases": [
5 {
6 "comment": "Matching a literal",
7 "expression": "foo[?name == `a`]",
8 "result": [{"name": "a"}]
9 }
10 ]
11 },
12 {
13 "given": {"foo": [0, 1], "bar": [2, 3]},
14 "cases": [
15 {
16 "comment": "Matching a literal",
17 "expression": "*[?[0] == `0`]",
18 "result": [[], []]
19 }
20 ]
21 },
22 {
23 "given": {"foo": [{"first": "foo", "last": "bar"},
24 {"first": "foo", "last": "foo"},
25 {"first": "foo", "last": "baz"}]},
26 "cases": [
27 {
28 "comment": "Matching an expression",
29 "expression": "foo[?first == last]",
30 "result": [{"first": "foo", "last": "foo"}]
31 },
32 {
33 "comment": "Verify projection created from filter",
34 "expression": "foo[?first == last].first",
35 "result": ["foo"]
36 }
37 ]
38 },
39 {
40 "given": {"foo": [{"age": 20},
41 {"age": 25},
42 {"age": 30}]},
43 "cases": [
44 {
45 "comment": "Greater than with a number",
46 "expression": "foo[?age > `25`]",
47 "result": [{"age": 30}]
48 },
49 {
50 "expression": "foo[?age >= `25`]",
51 "result": [{"age": 25}, {"age": 30}]
52 },
53 {
54 "comment": "Greater than with a number",
55 "expression": "foo[?age > `30`]",
56 "result": []
57 },
58 {
59 "comment": "Greater than with a number",
60 "expression": "foo[?age < `25`]",
61 "result": [{"age": 20}]
62 },
63 {
64 "comment": "Greater than with a number",
65 "expression": "foo[?age <= `25`]",
66 "result": [{"age": 20}, {"age": 25}]
67 },
68 {
69 "comment": "Greater than with a number",
70 "expression": "foo[?age < `20`]",
71 "result": []
72 },
73 {
74 "expression": "foo[?age == `20`]",
75 "result": [{"age": 20}]
76 },
77 {
78 "expression": "foo[?age != `20`]",
79 "result": [{"age": 25}, {"age": 30}]
80 }
81 ]
82 },
83 {
84 "given": {"foo": [{"top": {"name": "a"}},
85 {"top": {"name": "b"}}]},
86 "cases": [
87 {
88 "comment": "Filter with subexpression",
89 "expression": "foo[?top.name == `a`]",
90 "result": [{"top": {"name": "a"}}]
91 }
92 ]
93 },
94 {
95 "given": {"foo": [{"top": {"first": "foo", "last": "bar"}},
96 {"top": {"first": "foo", "last": "foo"}},
97 {"top": {"first": "foo", "last": "baz"}}]},
98 "cases": [
99 {
100 "comment": "Matching an expression",
101 "expression": "foo[?top.first == top.last]",
102 "result": [{"top": {"first": "foo", "last": "foo"}}]
103 },
104 {
105 "comment": "Matching a JSON array",
106 "expression": "foo[?top == `{\"first\": \"foo\", \"last\": \"bar\"}`]",
107 "result": [{"top": {"first": "foo", "last": "bar"}}]
108 }
109 ]
110 },
111 {
112 "given": {"foo": [
113 {"key": true},
114 {"key": false},
115 {"key": 0},
116 {"key": 1},
117 {"key": [0]},
118 {"key": {"bar": [0]}},
119 {"key": null},
120 {"key": [1]},
121 {"key": {"a":2}}
122 ]},
123 "cases": [
124 {
125 "expression": "foo[?key == `true`]",
126 "result": [{"key": true}]
127 },
128 {
129 "expression": "foo[?key == `false`]",
130 "result": [{"key": false}]
131 },
132 {
133 "expression": "foo[?key == `0`]",
134 "result": [{"key": 0}]
135 },
136 {
137 "expression": "foo[?key == `1`]",
138 "result": [{"key": 1}]
139 },
140 {
141 "expression": "foo[?key == `[0]`]",
142 "result": [{"key": [0]}]
143 },
144 {
145 "expression": "foo[?key == `{\"bar\": [0]}`]",
146 "result": [{"key": {"bar": [0]}}]
147 },
148 {
149 "expression": "foo[?key == `null`]",
150 "result": [{"key": null}]
151 },
152 {
153 "expression": "foo[?key == `[1]`]",
154 "result": [{"key": [1]}]
155 },
156 {
157 "expression": "foo[?key == `{\"a\":2}`]",
158 "result": [{"key": {"a":2}}]
159 },
160 {
161 "expression": "foo[?`true` == key]",
162 "result": [{"key": true}]
163 },
164 {
165 "expression": "foo[?`false` == key]",
166 "result": [{"key": false}]
167 },
168 {
169 "expression": "foo[?`0` == key]",
170 "result": [{"key": 0}]
171 },
172 {
173 "expression": "foo[?`1` == key]",
174 "result": [{"key": 1}]
175 },
176 {
177 "expression": "foo[?`[0]` == key]",
178 "result": [{"key": [0]}]
179 },
180 {
181 "expression": "foo[?`{\"bar\": [0]}` == key]",
182 "result": [{"key": {"bar": [0]}}]
183 },
184 {
185 "expression": "foo[?`null` == key]",
186 "result": [{"key": null}]
187 },
188 {
189 "expression": "foo[?`[1]` == key]",
190 "result": [{"key": [1]}]
191 },
192 {
193 "expression": "foo[?`{\"a\":2}` == key]",
194 "result": [{"key": {"a":2}}]
195 },
196 {
197 "expression": "foo[?key != `true`]",
198 "result": [{"key": false}, {"key": 0}, {"key": 1}, {"key": [0]},
199 {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}]
200 },
201 {
202 "expression": "foo[?key != `false`]",
203 "result": [{"key": true}, {"key": 0}, {"key": 1}, {"key": [0]},
204 {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}]
205 },
206 {
207 "expression": "foo[?key != `0`]",
208 "result": [{"key": true}, {"key": false}, {"key": 1}, {"key": [0]},
209 {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}]
210 },
211 {
212 "expression": "foo[?key != `1`]",
213 "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": [0]},
214 {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}]
215 },
216 {
217 "expression": "foo[?key != `null`]",
218 "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]},
219 {"key": {"bar": [0]}}, {"key": [1]}, {"key": {"a":2}}]
220 },
221 {
222 "expression": "foo[?key != `[1]`]",
223 "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]},
224 {"key": {"bar": [0]}}, {"key": null}, {"key": {"a":2}}]
225 },
226 {
227 "expression": "foo[?key != `{\"a\":2}`]",
228 "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]},
229 {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}]
230 },
231 {
232 "expression": "foo[?`true` != key]",
233 "result": [{"key": false}, {"key": 0}, {"key": 1}, {"key": [0]},
234 {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}]
235 },
236 {
237 "expression": "foo[?`false` != key]",
238 "result": [{"key": true}, {"key": 0}, {"key": 1}, {"key": [0]},
239 {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}]
240 },
241 {
242 "expression": "foo[?`0` != key]",
243 "result": [{"key": true}, {"key": false}, {"key": 1}, {"key": [0]},
244 {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}]
245 },
246 {
247 "expression": "foo[?`1` != key]",
248 "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": [0]},
249 {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}]
250 },
251 {
252 "expression": "foo[?`null` != key]",
253 "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]},
254 {"key": {"bar": [0]}}, {"key": [1]}, {"key": {"a":2}}]
255 },
256 {
257 "expression": "foo[?`[1]` != key]",
258 "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]},
259 {"key": {"bar": [0]}}, {"key": null}, {"key": {"a":2}}]
260 },
261 {
262 "expression": "foo[?`{\"a\":2}` != key]",
263 "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]},
264 {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}]
265 }
266 ]
267 },
268 {
269 "given": {"reservations": [
270 {"instances": [
271 {"foo": 1, "bar": 2}, {"foo": 1, "bar": 3},
272 {"foo": 1, "bar": 2}, {"foo": 2, "bar": 1}]}]},
273 "cases": [
274 {
275 "expression": "reservations[].instances[?bar==`1`]",
276 "result": [[{"foo": 2, "bar": 1}]]
277 },
278 {
279 "expression": "reservations[].instances[?bar==`1`][]",
280 "result": [{"foo": 2, "bar": 1}]
281 }
282 ]
283 },
284 {
285 "given": {
286 "baz": "other",
287 "foo": [
288 {"bar": 1}, {"bar": 2}, {"bar": 3}, {"bar": 4}, {"bar": 1, "baz": 2}
289 ]
290 },
291 "cases": [
292 {
293 "expression": "foo[?bar==`1`].bar[0]",
294 "result": []
295 }
296 ]
297 },
298 {
299 "given": {
300 "foo": [
301 {"a": 1, "b": {"c": "x"}},
302 {"a": 1, "b": {"c": "y"}},
303 {"a": 1, "b": {"c": "z"}},
304 {"a": 2, "b": {"c": "z"}},
305 {"a": 1, "baz": 2}
306 ]
307 },
308 "cases": [
309 {
310 "expression": "foo[?a==`1`].b.c",
311 "result": ["x", "y", "z"]
312 }
313 ]
314 }
315]