1{
2 "filtered-array-from-literal": [
3 {
4 "expr": "foo.*",
5 "contexts": {
6 "foo": null
7 },
8 "result": { "kind": "Array", "value": [] }
9 },
10 {
11 "expr": "foo.*",
12 "contexts": {
13 "foo": false
14 },
15 "result": { "kind": "Array", "value": [] }
16 },
17 {
18 "expr": "foo.*",
19 "contexts": {
20 "foo": true
21 },
22 "result": { "kind": "Array", "value": [] }
23 },
24 {
25 "expr": "foo.*",
26 "contexts": {
27 "foo": 123
28 },
29 "result": { "kind": "Array", "value": [] }
30 },
31 {
32 "expr": "foo.*",
33 "contexts": {
34 "foo": "abc"
35 },
36 "result": { "kind": "Array", "value": [] }
37 }
38 ],
39 "filtered-array-from-array": [
40 {
41 "expr": "foo.*",
42 "contexts": {
43 "foo": [
44 "zero",
45 "one"
46 ]
47 },
48 "result": { "kind": "Array", "value": ["zero", "one"] }
49 }
50 ],
51 "filtered-array-from-object": [
52 {
53 "expr": "foo.*",
54 "contexts": {
55 "foo": {
56 "one": "one val",
57 "two": "two val"
58 }
59 },
60 "result": { "kind": "Array", "value": ["one val", "two val"] }
61 }
62 ],
63 "nested-object": [
64 {
65 "expr": "foo.*.one",
66 "contexts": {
67 "foo": [
68 {
69 "one": "obj_1_prop_1",
70 "two": "obj_1_prop_2"
71 },
72 {
73 "one": "obj_2_prop_1",
74 "two": "obj_2_prop_2"
75 }
76 ]
77 },
78 "result": { "kind": "Array", "value": ["obj_1_prop_1", "obj_2_prop_1"] }
79 },
80 {
81 "expr": "foo[*]['']",
82 "contexts": {
83 "foo": [
84 {
85 "": "empty string"
86 }
87 ]
88 },
89 "result": { "kind": "Array", "value": ["empty string"] }
90 }
91 ],
92 "nested-object-property-case-insensitive": [
93 {
94 "expr": "foo.*.thePROPERTY",
95 "contexts": {
96 "foo": [
97 {
98 "THEproperty": "the property"
99 }
100 ]
101 },
102 "result": { "kind": "Array", "value": ["the property"] }
103 }
104 ],
105 "nested-object-property-not-found": [
106 {
107 "expr": "foo.*.one",
108 "contexts": {
109 "foo": [
110 {
111 "one": "obj_1_prop_1",
112 "two": "obj_1_prop_2"
113 },
114 {
115 "zero": "obj_2_prop_0",
116 "three": "obj_2_prop_3"
117 },
118 {
119 "one": "obj_3_prop_1",
120 "two": "obj_3_prop_2"
121 }
122 ]
123 },
124 "result": { "kind": "Array", "value": ["obj_1_prop_1", "obj_3_prop_1"] }
125 }
126 ],
127 "nested-object-property-coercion": [
128 {
129 "expr": "foo[*][null]",
130 "contexts": {
131 "foo": [
132 {
133 "": "empty string"
134 }
135 ]
136 },
137 "result": { "kind": "Array", "value": ["empty string"] }
138 },
139 {
140 "expr": "foo[*][false]",
141 "contexts": {
142 "foo": [
143 {
144 "false": "It's false"
145 }
146 ]
147 },
148 "result": { "kind": "Array", "value": ["It's false"] }
149 },
150 {
151 "expr": "foo[*][true]",
152 "contexts": {
153 "foo": [
154 {
155 "true": "It's true"
156 }
157 ]
158 },
159 "result": { "kind": "Array", "value": ["It's true"] }
160 },
161 {
162 "expr": "foo[*][0x0f]",
163 "contexts": {
164 "foo": [
165 {
166 "15": "fifteen"
167 }
168 ]
169 },
170 "result": { "kind": "Array", "value": ["fifteen"] }
171 },
172 {
173 "expr": "foo[*][NaN]",
174 "contexts": {
175 "foo": [
176 {
177 "NaN": "It's NaN"
178 }
179 ]
180 },
181 "result": { "kind": "Array", "value": ["It's NaN"] }
182 },
183 {
184 "expr": "foo[*][Infinity]",
185 "contexts": {
186 "foo": [
187 {
188 "Infinity": "It's Infinity"
189 }
190 ]
191 },
192 "result": { "kind": "Array", "value": ["It's Infinity"] }
193 },
194 {
195 "expr": "foo[*][-Infinity]",
196 "contexts": {
197 "foo": [
198 {
199 "-Infinity": "It's -Infinity"
200 }
201 ]
202 },
203 "result": { "kind": "Array", "value": ["It's -Infinity"] }
204 },
205 {
206 "expr": "foo[*][fromjson('[]')]",
207 "contexts": {
208 "foo": [
209 {
210 "": "empty string",
211 "Array": "It's array"
212 }
213 ]
214 },
215 "result": { "kind": "Array", "value": [] }
216 },
217 {
218 "expr": "foo[*][fromjson('{}')]",
219 "contexts": {
220 "foo": [
221 {
222 "": "empty string",
223 "Object": "It's object"
224 }
225 ]
226 },
227 "result": { "kind": "Array", "value": [] }
228 }
229 ],
230 "nested-array": [
231 {
232 "expr": "foo[*][1]",
233 "contexts": {
234 "foo": [
235 [
236 "ary_0_idx_0",
237 "ary_0_idx_1",
238 "ary_0_idx_2"
239 ],
240 [
241 "ary_1_idx_0",
242 "ary_1_idx_1",
243 "ary_1_idx_2"
244 ]
245 ]
246 },
247 "result": { "kind": "Array", "value": ["ary_0_idx_1", "ary_1_idx_1"] }
248 }
249 ],
250 "nested-array-index-not-found": [
251 {
252 "expr": "foo[*][1]",
253 "contexts": {
254 "foo": [
255 [
256 "ary_0_idx_0",
257 "ary_0_idx_1",
258 "ary_0_idx_2"
259 ],
260 [
261 "ary_1_idx_0"
262 ],
263 [
264 "ary_2_idx_0",
265 "ary_2_idx_1",
266 "ary_2_idx_2"
267 ]
268 ]
269 },
270 "result": { "kind": "Array", "value": ["ary_0_idx_1", "ary_2_idx_1"] }
271 },
272 {
273 "expr": "foo[*][-1]",
274 "contexts": {
275 "foo": [
276 [
277 "zero",
278 "one",
279 "two"
280 ]
281 ]
282 },
283 "result": { "kind": "Array", "value": [] }
284 },
285 {
286 "expr": "foo[*][NaN]",
287 "contexts": {
288 "foo": [
289 [
290 "zero",
291 "one",
292 "two"
293 ]
294 ]
295 },
296 "result": { "kind": "Array", "value": [] }
297 },
298 {
299 "expr": "foo[*][Infinity]",
300 "contexts": {
301 "foo": [
302 [
303 "zero",
304 "one",
305 "two"
306 ]
307 ]
308 },
309 "result": { "kind": "Array", "value": [] }
310 },
311 {
312 "expr": "foo[*][Infinity]",
313 "contexts": {
314 "foo": [
315 [
316 "zero",
317 "one",
318 "two"
319 ]
320 ]
321 },
322 "result": { "kind": "Array", "value": [] }
323 }
324 ],
325 "nested-array-index-coercion": [
326 {
327 "expr": "foo[*][null]",
328 "contexts": {
329 "foo": [
330 [
331 "zero",
332 "one",
333 "two"
334 ]
335 ]
336 },
337 "result": { "kind": "Array", "value": ["zero"] }
338 },
339 {
340 "expr": "foo[*][false]",
341 "contexts": {
342 "foo": [
343 [
344 "zero",
345 "one",
346 "two"
347 ]
348 ]
349 },
350 "result": { "kind": "Array", "value": ["zero"] }
351 },
352 {
353 "expr": "foo[*][true]",
354 "contexts": {
355 "foo": [
356 [
357 "zero",
358 "one",
359 "two"
360 ]
361 ]
362 },
363 "result": { "kind": "Array", "value": ["one"] }
364 },
365 {
366 "expr": "foo[*]['']",
367 "contexts": {
368 "foo": [
369 [
370 "zero",
371 "one",
372 "two"
373 ]
374 ]
375 },
376 "result": { "kind": "Array", "value": ["zero"] }
377 },
378 {
379 "expr": "foo[*]['abc']",
380 "contexts": {
381 "foo": [
382 [
383 "zero",
384 "one",
385 "two"
386 ]
387 ]
388 },
389 "result": { "kind": "Array", "value": [] }
390 },
391 {
392 "expr": "foo[*][' 0x01 ']",
393 "contexts": {
394 "foo": [
395 [
396 "zero",
397 "one",
398 "two"
399 ]
400 ]
401 },
402 "result": { "kind": "Array", "value": ["one"] }
403 },
404 {
405 "expr": "foo[*][fromjson('[]')]",
406 "contexts": {
407 "foo": [
408 [
409 "zero",
410 "one",
411 "two"
412 ]
413 ]
414 },
415 "result": { "kind": "Array", "value": [] }
416 },
417 {
418 "expr": "foo[*][fromjson('{}')]",
419 "contexts": {
420 "foo": [
421 [
422 "zero",
423 "one",
424 "two"
425 ]
426 ]
427 },
428 "result": { "kind": "Array", "value": [] }
429 }
430 ],
431 "double-star": [
432 {
433 "expr": "foo.*.*",
434 "contexts": {
435 "foo": [
436 null,
437 false,
438 true,
439 123,
440 "hello",
441 [
442 "zero",
443 "one",
444 "two"
445 ],
446 {
447 "p1": "v1",
448 "p2": "v2",
449 "p3": "v3"
450 }
451 ]
452 },
453 "result": { "kind": "Array", "value": ["zero", "one", "two", "v1", "v2", "v3"] }
454 }
455 ],
456 "double-property": [
457 {
458 "expr": "foo.*.p.nestedp",
459 "contexts": {
460 "foo": [
461 {
462 "p": {
463 "nestedp": "val 1"
464 }
465 },
466 {
467 "p": {
468 "nestedp": "val 2"
469 }
470 }
471 ]
472 },
473 "result": { "kind": "Array", "value": ["val 1", "val 2"] }
474 }
475 ],
476 "double-index": [
477 {
478 "expr": "foo[*][1][2]",
479 "contexts": {
480 "foo": [
481 [
482 [
483 "0_0_0",
484 "0_0_1",
485 "0_0_2",
486 "0_0_3"
487 ],
488 [
489 "0_1_0",
490 "0_1_1",
491 "0_1_2",
492 "0_1_3"
493 ],
494 [
495 "0_2_0",
496 "0_2_1",
497 "0_2_2",
498 "0_2_3"
499 ]
500 ],
501 [
502 [
503 "1_0_0",
504 "1_0_1",
505 "1_0_2",
506 "1_0_3"
507 ],
508 [
509 "1_1_0",
510 "1_1_1",
511 "1_1_2",
512 "1_1_3"
513 ],
514 [
515 "1_2_0",
516 "1_2_1",
517 "1_2_2",
518 "1_2_3"
519 ]
520 ]
521 ]
522 },
523 "result": { "kind": "Array", "value": ["0_1_2", "1_1_2"] }
524 }
525 ],
526 "not-found-always-returns-empty-array": [
527 {
528 "expr": "foo[*][1]",
529 "contexts": {
530 "foo": []
531 },
532 "result": { "kind": "Array", "value": [] }
533 },
534 {
535 "expr": "foo[*][1][2]",
536 "contexts": {
537 "foo": []
538 },
539 "result": { "kind": "Array", "value": [] }
540 },
541 {
542 "expr": "foo.*.bar",
543 "contexts": {
544 "foo": {}
545 },
546 "result": { "kind": "Array", "value": [] }
547 },
548 {
549 "expr": "foo.*.bar.baz",
550 "contexts": {
551 "foo": []
552 },
553 "result": { "kind": "Array", "value": [] }
554 }
555 ]
556}