UNPKG

10.3 kBJSONView Raw
1[{
2 "given": {
3 "foo": {
4 "bar": "bar",
5 "baz": "baz",
6 "qux": "qux",
7 "nested": {
8 "one": {
9 "a": "first",
10 "b": "second",
11 "c": "third"
12 },
13 "two": {
14 "a": "first",
15 "b": "second",
16 "c": "third"
17 },
18 "three": {
19 "a": "first",
20 "b": "second",
21 "c": {"inner": "third"}
22 }
23 }
24 },
25 "bar": 1,
26 "baz": 2,
27 "qux\"": 3
28 },
29 "cases": [
30 {
31 "expression": "foo.{bar: bar}",
32 "result": {"bar": "bar"}
33 },
34 {
35 "expression": "foo.{\"bar\": bar}",
36 "result": {"bar": "bar"}
37 },
38 {
39 "expression": "foo.{\"foo.bar\": bar}",
40 "result": {"foo.bar": "bar"}
41 },
42 {
43 "expression": "foo.{bar: bar, baz: baz}",
44 "result": {"bar": "bar", "baz": "baz"}
45 },
46 {
47 "expression": "foo.{\"bar\": bar, \"baz\": baz}",
48 "result": {"bar": "bar", "baz": "baz"}
49 },
50 {
51 "expression": "{\"baz\": baz, \"qux\\\"\": \"qux\\\"\"}",
52 "result": {"baz": 2, "qux\"": 3}
53 },
54 {
55 "expression": "foo.{bar:bar,baz:baz}",
56 "result": {"bar": "bar", "baz": "baz"}
57 },
58 {
59 "expression": "foo.{bar: bar,qux: qux}",
60 "result": {"bar": "bar", "qux": "qux"}
61 },
62 {
63 "expression": "foo.{bar: bar, noexist: noexist}",
64 "result": {"bar": "bar", "noexist": null}
65 },
66 {
67 "expression": "foo.{noexist: noexist, alsonoexist: alsonoexist}",
68 "result": {"noexist": null, "alsonoexist": null}
69 },
70 {
71 "expression": "foo.badkey.{nokey: nokey, alsonokey: alsonokey}",
72 "result": null
73 },
74 {
75 "expression": "foo.nested.*.{a: a,b: b}",
76 "result": [{"a": "first", "b": "second"},
77 {"a": "first", "b": "second"},
78 {"a": "first", "b": "second"}]
79 },
80 {
81 "expression": "foo.nested.three.{a: a, cinner: c.inner}",
82 "result": {"a": "first", "cinner": "third"}
83 },
84 {
85 "expression": "foo.nested.three.{a: a, c: c.inner.bad.key}",
86 "result": {"a": "first", "c": null}
87 },
88 {
89 "expression": "foo.{a: nested.one.a, b: nested.two.b}",
90 "result": {"a": "first", "b": "second"}
91 },
92 {
93 "expression": "{bar: bar, baz: baz}",
94 "result": {"bar": 1, "baz": 2}
95 },
96 {
97 "expression": "{bar: bar}",
98 "result": {"bar": 1}
99 },
100 {
101 "expression": "{otherkey: bar}",
102 "result": {"otherkey": 1}
103 },
104 {
105 "expression": "{no: no, exist: exist}",
106 "result": {"no": null, "exist": null}
107 },
108 {
109 "expression": "foo.[bar]",
110 "result": ["bar"]
111 },
112 {
113 "expression": "foo.[bar,baz]",
114 "result": ["bar", "baz"]
115 },
116 {
117 "expression": "foo.[bar,qux]",
118 "result": ["bar", "qux"]
119 },
120 {
121 "expression": "foo.[bar,noexist]",
122 "result": ["bar", null]
123 },
124 {
125 "expression": "foo.[noexist,alsonoexist]",
126 "result": [null, null]
127 }
128 ]
129}, {
130 "given": {
131 "foo": {"bar": 1, "baz": [2, 3, 4]}
132 },
133 "cases": [
134 {
135 "expression": "foo.{bar:bar,baz:baz}",
136 "result": {"bar": 1, "baz": [2, 3, 4]}
137 },
138 {
139 "expression": "foo.[bar,baz[0]]",
140 "result": [1, 2]
141 },
142 {
143 "expression": "foo.[bar,baz[1]]",
144 "result": [1, 3]
145 },
146 {
147 "expression": "foo.[bar,baz[2]]",
148 "result": [1, 4]
149 },
150 {
151 "expression": "foo.[bar,baz[3]]",
152 "result": [1, null]
153 },
154 {
155 "expression": "foo.[bar[0],baz[3]]",
156 "result": [null, null]
157 }
158 ]
159}, {
160 "given": {
161 "foo": {"bar": 1, "baz": 2}
162 },
163 "cases": [
164 {
165 "expression": "foo.{bar: bar, baz: baz}",
166 "result": {"bar": 1, "baz": 2}
167 },
168 {
169 "expression": "foo.[bar,baz]",
170 "result": [1, 2]
171 }
172 ]
173}, {
174 "given": {
175 "foo": {
176 "bar": {"baz": [{"common": "first", "one": 1},
177 {"common": "second", "two": 2}]},
178 "ignoreme": 1,
179 "includeme": true
180 }
181 },
182 "cases": [
183 {
184 "expression": "foo.{bar: bar.baz[1],includeme: includeme}",
185 "result": {"bar": {"common": "second", "two": 2}, "includeme": true}
186 },
187 {
188 "expression": "foo.{\"bar.baz.two\": bar.baz[1].two, includeme: includeme}",
189 "result": {"bar.baz.two": 2, "includeme": true}
190 },
191 {
192 "expression": "foo.[includeme, bar.baz[*].common]",
193 "result": [true, ["first", "second"]]
194 },
195 {
196 "expression": "foo.[includeme, bar.baz[*].none]",
197 "result": [true, []]
198 },
199 {
200 "expression": "foo.[includeme, bar.baz[].common]",
201 "result": [true, ["first", "second"]]
202 }
203 ]
204}, {
205 "given": {
206 "reservations": [{
207 "instances": [
208 {"id": "id1",
209 "name": "first"},
210 {"id": "id2",
211 "name": "second"}
212 ]}, {
213 "instances": [
214 {"id": "id3",
215 "name": "third"},
216 {"id": "id4",
217 "name": "fourth"}
218 ]}
219 ]},
220 "cases": [
221 {
222 "expression": "reservations[*].instances[*].{id: id, name: name}",
223 "result": [[{"id": "id1", "name": "first"}, {"id": "id2", "name": "second"}],
224 [{"id": "id3", "name": "third"}, {"id": "id4", "name": "fourth"}]]
225 },
226 {
227 "expression": "reservations[].instances[].{id: id, name: name}",
228 "result": [{"id": "id1", "name": "first"},
229 {"id": "id2", "name": "second"},
230 {"id": "id3", "name": "third"},
231 {"id": "id4", "name": "fourth"}]
232 },
233 {
234 "expression": "reservations[].instances[].[id, name]",
235 "result": [["id1", "first"],
236 ["id2", "second"],
237 ["id3", "third"],
238 ["id4", "fourth"]]
239 }
240 ]
241},
242{
243 "given": {
244 "foo": [{
245 "bar": [
246 {
247 "qux": 2,
248 "baz": 1
249 },
250 {
251 "qux": 4,
252 "baz": 3
253 }
254 ]
255 },
256 {
257 "bar": [
258 {
259 "qux": 6,
260 "baz": 5
261 },
262 {
263 "qux": 8,
264 "baz": 7
265 }
266 ]
267 }
268 ]
269 },
270 "cases": [
271 {
272 "expression": "foo",
273 "result": [{"bar": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}]},
274 {"bar": [{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]}]
275 },
276 {
277 "expression": "foo[]",
278 "result": [{"bar": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}]},
279 {"bar": [{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]}]
280 },
281 {
282 "expression": "foo[].bar",
283 "result": [[{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}],
284 [{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]]
285 },
286 {
287 "expression": "foo[].bar[]",
288 "result": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3},
289 {"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]
290 },
291 {
292 "expression": "foo[].bar[].[baz, qux]",
293 "result": [[1, 2], [3, 4], [5, 6], [7, 8]]
294 },
295 {
296 "expression": "foo[].bar[].[baz]",
297 "result": [[1], [3], [5], [7]]
298 },
299 {
300 "expression": "foo[].bar[].[baz, qux][]",
301 "result": [1, 2, 3, 4, 5, 6, 7, 8]
302 }
303 ]
304},
305{
306 "given": {
307 "foo": {
308 "baz": [
309 {
310 "bar": "abc"
311 }, {
312 "bar": "def"
313 }
314 ],
315 "qux": ["zero"]
316 }
317 },
318 "cases": [
319 {
320 "expression": "foo.[baz[*].bar, qux[0]]",
321 "result": [["abc", "def"], "zero"]
322 }
323 ]
324},
325{
326 "given": {
327 "foo": {
328 "baz": [
329 {
330 "bar": "a",
331 "bam": "b",
332 "boo": "c"
333 }, {
334 "bar": "d",
335 "bam": "e",
336 "boo": "f"
337 }
338 ],
339 "qux": ["zero"]
340 }
341 },
342 "cases": [
343 {
344 "expression": "foo.[baz[*].[bar, boo], qux[0]]",
345 "result": [[["a", "c" ], ["d", "f" ]], "zero"]
346 }
347 ]
348},
349{
350 "given": {
351 "foo": {
352 "baz": [
353 {
354 "bar": "a",
355 "bam": "b",
356 "boo": "c"
357 }, {
358 "bar": "d",
359 "bam": "e",
360 "boo": "f"
361 }
362 ],
363 "qux": ["zero"]
364 }
365 },
366 "cases": [
367 {
368 "expression": "foo.[baz[*].not_there || baz[*].bar, qux[0]]",
369 "result": [["a", "d"], "zero"]
370 }
371 ]
372},
373{
374 "given": {"type": "object"},
375 "cases": [
376 {
377 "comment": "Nested multiselect",
378 "expression": "[[*],*]",
379 "result": [null, ["object"]]
380 }
381 ]
382},
383{
384 "given": [],
385 "cases": [
386 {
387 "comment": "Nested multiselect",
388 "expression": "[[*]]",
389 "result": [[]]
390 }
391 ]
392}
393]