1 | [{
|
2 | "given": {
|
3 | "foo": {
|
4 | "bar": {
|
5 | "baz": "one"
|
6 | },
|
7 | "other": {
|
8 | "baz": "two"
|
9 | },
|
10 | "other2": {
|
11 | "baz": "three"
|
12 | },
|
13 | "other3": {
|
14 | "notbaz": ["a", "b", "c"]
|
15 | },
|
16 | "other4": {
|
17 | "notbaz": ["d", "e", "f"]
|
18 | },
|
19 | "other5": {
|
20 | "other": {
|
21 | "a": 1,
|
22 | "b": 2,
|
23 | "c": 3
|
24 | }
|
25 | }
|
26 | }
|
27 | },
|
28 | "cases": [
|
29 | {
|
30 | "expression": "foo.*.baz",
|
31 | "result": ["one", "two", "three"]
|
32 | },
|
33 | {
|
34 | "expression": "foo.bar.*",
|
35 | "result": ["one"]
|
36 | },
|
37 | {
|
38 | "expression": "foo.*.notbaz",
|
39 | "result": [["a", "b", "c"], ["d", "e", "f"]]
|
40 | },
|
41 | {
|
42 | "expression": "foo.*.notbaz[0]",
|
43 | "result": ["a", "d"]
|
44 | },
|
45 | {
|
46 | "expression": "foo.*.notbaz[-1]",
|
47 | "result": ["c", "f"]
|
48 | },
|
49 | {
|
50 | "expression": "foo.*",
|
51 | "result": [{"baz": "one"}, {"baz": "two"}, {"baz": "three"},
|
52 | {"notbaz": ["a", "b", "c"]}, {"notbaz": ["d", "e", "f"]},
|
53 | {"other": {"a": 1, "b": 2, "c": 3}}]
|
54 | },
|
55 | {
|
56 | "expression": "foo.*.*",
|
57 | "result": [["one"], ["two"], ["three"],
|
58 | [["a", "b", "c"]], [["d", "e", "f"]],
|
59 | [{"a": 1, "b": 2, "c": 3}]]
|
60 | },
|
61 | {
|
62 | "expression": "foo.*.*.*",
|
63 | "result": [[], [], [], [], [], [[1, 2, 3]]]
|
64 | },
|
65 | {
|
66 | "expression": "foo.*.*.*.*",
|
67 | "result": [[], [], [], [], [], [[]]]
|
68 | }
|
69 | ]
|
70 | }, {
|
71 | "given": {
|
72 | "foo": {
|
73 | "bar": "one"
|
74 | },
|
75 | "other": {
|
76 | "bar": "two"
|
77 | },
|
78 | "nomatch": {
|
79 | "notbar": "three"
|
80 | }
|
81 | },
|
82 | "cases": [
|
83 | {
|
84 | "expression": "*.bar",
|
85 | "result": ["one", "two"]
|
86 | }
|
87 | ]
|
88 | }, {
|
89 | "given": {
|
90 | "top1": {
|
91 | "sub1": {"foo": "one"}
|
92 | },
|
93 | "top2": {
|
94 | "sub1": {"foo": "two"}
|
95 | },
|
96 | "top3": {
|
97 | "sub3": {"notfoo": "notfoo"}
|
98 | }
|
99 | },
|
100 | "cases": [
|
101 | {
|
102 | "expression": "*",
|
103 | "result": [{"sub1": {"foo": "one"}},
|
104 | {"sub1": {"foo": "two"}},
|
105 | { "sub3": {"notfoo": "notfoo"}}]
|
106 | },
|
107 | {
|
108 | "expression": "*.sub1",
|
109 | "result": [{"foo": "one"},
|
110 | {"foo": "two"}]
|
111 | },
|
112 | {
|
113 | "expression": "*.*",
|
114 | "result": [[{"foo": "one"}],
|
115 | [{"foo": "two"}],
|
116 | [{"notfoo": "notfoo"}]]
|
117 | },
|
118 | {
|
119 | "expression": "*.*.foo",
|
120 | "result": [["one"], ["two"], []]
|
121 | },
|
122 | {
|
123 | "expression": "*.sub1.foo",
|
124 | "result": ["one", "two"]
|
125 | }
|
126 | ]
|
127 | },
|
128 | {
|
129 | "given":
|
130 | {"foo": [{"bar": "one"}, {"bar": "two"}, {"bar": "three"}, {"notbar": "four"}]},
|
131 | "cases": [
|
132 | {
|
133 | "expression": "foo[*].bar",
|
134 | "result": ["one", "two", "three"]
|
135 | },
|
136 | {
|
137 | "expression": "foo[*].notbar",
|
138 | "result": ["four"]
|
139 | }
|
140 | ]
|
141 | },
|
142 | {
|
143 | "given":
|
144 | [{"bar": "one"}, {"bar": "two"}, {"bar": "three"}, {"notbar": "four"}],
|
145 | "cases": [
|
146 | {
|
147 | "expression": "[*]",
|
148 | "result": [{"bar": "one"}, {"bar": "two"}, {"bar": "three"}, {"notbar": "four"}]
|
149 | },
|
150 | {
|
151 | "expression": "[*].bar",
|
152 | "result": ["one", "two", "three"]
|
153 | },
|
154 | {
|
155 | "expression": "[*].notbar",
|
156 | "result": ["four"]
|
157 | }
|
158 | ]
|
159 | },
|
160 | {
|
161 | "given": {
|
162 | "foo": {
|
163 | "bar": [
|
164 | {"baz": ["one", "two", "three"]},
|
165 | {"baz": ["four", "five", "six"]},
|
166 | {"baz": ["seven", "eight", "nine"]}
|
167 | ]
|
168 | }
|
169 | },
|
170 | "cases": [
|
171 | {
|
172 | "expression": "foo.bar[*].baz",
|
173 | "result": [["one", "two", "three"], ["four", "five", "six"], ["seven", "eight", "nine"]]
|
174 | },
|
175 | {
|
176 | "expression": "foo.bar[*].baz[0]",
|
177 | "result": ["one", "four", "seven"]
|
178 | },
|
179 | {
|
180 | "expression": "foo.bar[*].baz[1]",
|
181 | "result": ["two", "five", "eight"]
|
182 | },
|
183 | {
|
184 | "expression": "foo.bar[*].baz[2]",
|
185 | "result": ["three", "six", "nine"]
|
186 | },
|
187 | {
|
188 | "expression": "foo.bar[*].baz[3]",
|
189 | "result": []
|
190 | }
|
191 | ]
|
192 | },
|
193 | {
|
194 | "given": {
|
195 | "foo": {
|
196 | "bar": [["one", "two"], ["three", "four"]]
|
197 | }
|
198 | },
|
199 | "cases": [
|
200 | {
|
201 | "expression": "foo.bar[*]",
|
202 | "result": [["one", "two"], ["three", "four"]]
|
203 | },
|
204 | {
|
205 | "expression": "foo.bar[0]",
|
206 | "result": ["one", "two"]
|
207 | },
|
208 | {
|
209 | "expression": "foo.bar[0][0]",
|
210 | "result": "one"
|
211 | },
|
212 | {
|
213 | "expression": "foo.bar[0][0][0]",
|
214 | "result": null
|
215 | },
|
216 | {
|
217 | "expression": "foo.bar[0][0][0][0]",
|
218 | "result": null
|
219 | },
|
220 | {
|
221 | "expression": "foo[0][0]",
|
222 | "result": null
|
223 | }
|
224 | ]
|
225 | },
|
226 | {
|
227 | "given": {
|
228 | "foo": [
|
229 | {"bar": [{"kind": "basic"}, {"kind": "intermediate"}]},
|
230 | {"bar": [{"kind": "advanced"}, {"kind": "expert"}]},
|
231 | {"bar": "string"}
|
232 | ]
|
233 |
|
234 | },
|
235 | "cases": [
|
236 | {
|
237 | "expression": "foo[*].bar[*].kind",
|
238 | "result": [["basic", "intermediate"], ["advanced", "expert"]]
|
239 | },
|
240 | {
|
241 | "expression": "foo[*].bar[0].kind",
|
242 | "result": ["basic", "advanced"]
|
243 | }
|
244 | ]
|
245 | },
|
246 | {
|
247 | "given": {
|
248 | "foo": [
|
249 | {"bar": {"kind": "basic"}},
|
250 | {"bar": {"kind": "intermediate"}},
|
251 | {"bar": {"kind": "advanced"}},
|
252 | {"bar": {"kind": "expert"}},
|
253 | {"bar": "string"}
|
254 | ]
|
255 | },
|
256 | "cases": [
|
257 | {
|
258 | "expression": "foo[*].bar.kind",
|
259 | "result": ["basic", "intermediate", "advanced", "expert"]
|
260 | }
|
261 | ]
|
262 | },
|
263 | {
|
264 | "given": {
|
265 | "foo": [{"bar": ["one", "two"]}, {"bar": ["three", "four"]}, {"bar": ["five"]}]
|
266 | },
|
267 | "cases": [
|
268 | {
|
269 | "expression": "foo[*].bar[0]",
|
270 | "result": ["one", "three", "five"]
|
271 | },
|
272 | {
|
273 | "expression": "foo[*].bar[1]",
|
274 | "result": ["two", "four"]
|
275 | },
|
276 | {
|
277 | "expression": "foo[*].bar[2]",
|
278 | "result": []
|
279 | }
|
280 | ]
|
281 | },
|
282 | {
|
283 | "given": {
|
284 | "foo": [{"bar": []}, {"bar": []}, {"bar": []}]
|
285 | },
|
286 | "cases": [
|
287 | {
|
288 | "expression": "foo[*].bar[0]",
|
289 | "result": []
|
290 | }
|
291 | ]
|
292 | },
|
293 | {
|
294 | "given": {
|
295 | "foo": [["one", "two"], ["three", "four"], ["five"]]
|
296 | },
|
297 | "cases": [
|
298 | {
|
299 | "expression": "foo[*][0]",
|
300 | "result": ["one", "three", "five"]
|
301 | },
|
302 | {
|
303 | "expression": "foo[*][1]",
|
304 | "result": ["two", "four"]
|
305 | }
|
306 | ]
|
307 | },
|
308 | {
|
309 | "given": {
|
310 | "foo": [
|
311 | [
|
312 | ["one", "two"], ["three", "four"]
|
313 | ], [
|
314 | ["five", "six"], ["seven", "eight"]
|
315 | ], [
|
316 | ["nine"], ["ten"]
|
317 | ]
|
318 | ]
|
319 | },
|
320 | "cases": [
|
321 | {
|
322 | "expression": "foo[*][0]",
|
323 | "result": [["one", "two"], ["five", "six"], ["nine"]]
|
324 | },
|
325 | {
|
326 | "expression": "foo[*][1]",
|
327 | "result": [["three", "four"], ["seven", "eight"], ["ten"]]
|
328 | },
|
329 | {
|
330 | "expression": "foo[*][0][0]",
|
331 | "result": ["one", "five", "nine"]
|
332 | },
|
333 | {
|
334 | "expression": "foo[*][1][0]",
|
335 | "result": ["three", "seven", "ten"]
|
336 | },
|
337 | {
|
338 | "expression": "foo[*][0][1]",
|
339 | "result": ["two", "six"]
|
340 | },
|
341 | {
|
342 | "expression": "foo[*][1][1]",
|
343 | "result": ["four", "eight"]
|
344 | },
|
345 | {
|
346 | "expression": "foo[*][2]",
|
347 | "result": []
|
348 | },
|
349 | {
|
350 | "expression": "foo[*][2][2]",
|
351 | "result": []
|
352 | },
|
353 | {
|
354 | "expression": "bar[*]",
|
355 | "result": null
|
356 | },
|
357 | {
|
358 | "expression": "bar[*].baz[*]",
|
359 | "result": null
|
360 | }
|
361 | ]
|
362 | },
|
363 | {
|
364 | "given": {
|
365 | "string": "string",
|
366 | "hash": {"foo": "bar", "bar": "baz"},
|
367 | "number": 23,
|
368 | "nullvalue": null
|
369 | },
|
370 | "cases": [
|
371 | {
|
372 | "expression": "string[*]",
|
373 | "result": null
|
374 | },
|
375 | {
|
376 | "expression": "hash[*]",
|
377 | "result": null
|
378 | },
|
379 | {
|
380 | "expression": "number[*]",
|
381 | "result": null
|
382 | },
|
383 | {
|
384 | "expression": "nullvalue[*]",
|
385 | "result": null
|
386 | },
|
387 | {
|
388 | "expression": "string[*].foo",
|
389 | "result": null
|
390 | },
|
391 | {
|
392 | "expression": "hash[*].foo",
|
393 | "result": null
|
394 | },
|
395 | {
|
396 | "expression": "number[*].foo",
|
397 | "result": null
|
398 | },
|
399 | {
|
400 | "expression": "nullvalue[*].foo",
|
401 | "result": null
|
402 | },
|
403 | {
|
404 | "expression": "nullvalue[*].foo[*].bar",
|
405 | "result": null
|
406 | }
|
407 | ]
|
408 | },
|
409 | {
|
410 | "given": {
|
411 | "string": "string",
|
412 | "hash": {"foo": "bar", "bar": "baz"},
|
413 | "number": 23,
|
414 | "array": [1, 2, 3],
|
415 | "nullvalue": null
|
416 | },
|
417 | "cases": [
|
418 | {
|
419 | "expression": "string.*",
|
420 | "result": null
|
421 | },
|
422 | {
|
423 | "expression": "hash.*",
|
424 | "result": ["bar", "baz"]
|
425 | },
|
426 | {
|
427 | "expression": "number.*",
|
428 | "result": null
|
429 | },
|
430 | {
|
431 | "expression": "array.*",
|
432 | "result": null
|
433 | },
|
434 | {
|
435 | "expression": "nullvalue.*",
|
436 | "result": null
|
437 | }
|
438 | ]
|
439 | },
|
440 | {
|
441 | "given": {
|
442 | "a": [0, 1, 2],
|
443 | "b": [3, 4, 5]
|
444 | },
|
445 | "cases": [
|
446 | {
|
447 | "expression": "*[0]",
|
448 | "result": [0, 3]
|
449 | }
|
450 | ]
|
451 | }
|
452 | ]
|