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