jamespath 0.5.0

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