11[
2- {
3- "given" : {
4- "search_for" : " foo" ,
5- "people" : [
6- {
7- "name" : " a"
8- },
9- {
10- "name" : " b"
11- },
12- {
13- "name" : " c"
14- },
15- {
16- "name" : " foo"
17- },
18- {
19- "name" : " bar"
20- },
21- {
22- "name" : " baz"
23- },
24- {
25- "name" : " qux"
26- },
27- {
28- "name" : " x"
29- },
30- {
31- "name" : " y"
32- },
33- {
34- "name" : " z"
35- }
36- ]
37- },
38- "cases" : [
39- {
40- "description" : " Let function with filters" ,
41- "expression" : " let({search_for: search_for}, &people[?name==search_for].name | [0])" ,
42- "result" : " foo"
43- }
44- ]
45- },
46- {
47- "given" : {
48- "a" : {
49- "mylist" : [
50- {
51- "l1" : " 1" ,
52- "result" : " foo"
53- },
54- {
55- "l2" : " 2" ,
56- "result" : " bar"
57- },
58- {
59- "l1" : " 8" ,
60- "l2" : " 9"
61- },
62- {
63- "l1" : " 8" ,
64- "l2" : " 9"
65- }
66- ],
67- "level2" : " 2"
68- },
69- "level1" : " 1" ,
70- "nested" : {
71- "a" : {
72- "b" : {
73- "c" : {
74- "fourth" : " fourth"
75- },
76- "third" : " third"
77- },
78- "second" : " second"
79- },
80- "first" : " first"
81- },
82- "precedence" : {
83- "a" : {
84- "b" : {
85- "c" : {
86- "variable" : " fourth"
87- },
88- "variable" : " third" ,
89- "other" : " y"
90- },
91- "variable" : " second" ,
92- "other" : " x"
93- },
94- "variable" : " first" ,
95- "other" : " w"
96- }
97- },
98- "cases" : [
99- {
100- "description" : " Basic let from scope" ,
101- "expression" : " let({level1: level1}, &a.[level2, level1])" ,
102- "result" : [
103- " 2" ,
104- " 1"
105- ]
106- },
107- {
108- "description" : " Current object has precedence" ,
109- "expression" : " let({level1: `\" other\" `}, &level1)" ,
110- "result" : " 1"
111- },
112- {
113- "description" : " No scope specified using literal hash" ,
114- "expression" : " let(`{}`, &a.level2)" ,
115- "result" : " 2"
116- },
117- {
118- "description" : " Arbitrary variable added" ,
119- "expression" : " let({foo: `\" anything\" `}, &[level1, foo])" ,
120- "result" : [
121- " 1" ,
122- " anything"
123- ]
124- },
125- {
126- "description" : " Basic let from current object" ,
127- "expression" : " let({other: level1}, &level1)" ,
128- "result" : " 1"
129- },
130- {
131- "description" : " Nested let function with filters" ,
132- "expression" : " let({level1: level1}, &a.[mylist[?l1==level1].result, let({level2: level2}, &mylist[?l2==level2].result)])[]" ,
133- "result" : [
134- " foo" ,
135- " bar"
136- ]
137- },
138- {
139- "description" : " Nested let function with filters with literal scope binding" ,
140- "expression" : " let(`{\" level1\" : \" 1\" }`, &a.[mylist[?l1==level1].result, let({level2: level2}, &mylist[?l2==level2].result)])[]" ,
141- "result" : [
142- " foo" ,
143- " bar"
144- ]
145- },
146- {
147- "description" : " Nested let functions" ,
148- "expression" : " nested.let({level1: first}, &a.let({level2: second}, &b.let({level3: third}, &c.{first: level1, second: level2, third: level3, fourth: fourth})))" ,
149- "result" : {
150- "first" : " first" ,
151- "second" : " second" ,
152- "third" : " third" ,
153- "fourth" : " fourth"
154- }
155- },
156- {
157- "description" : " Precedence of lexical vars from scope object" ,
158- "expression" : " precedence.let({other: other}, &a.let({other: other}, &b.let({other: other}, &c.{other: other})))" ,
159- "result" : {
160- "other" : " y"
161- }
162- },
163- {
164- "description" : " Precedence of lexical vars from current object" ,
165- "expression" : " precedence.let({variable: variable}, &a.let({variable: variable}, &b.let({variable: variable}, &c.let({variable: `\" override\" `}, &variable))))" ,
166- "result" : " fourth"
167- }
168- ]
169- }
2+ {
3+ "given" : {
4+ "search_for" : " foo" ,
5+ "people" : [
6+ {
7+ "name" : " a"
8+ },
9+ {
10+ "name" : " b"
11+ },
12+ {
13+ "name" : " c"
14+ },
15+ {
16+ "name" : " foo"
17+ },
18+ {
19+ "name" : " bar"
20+ },
21+ {
22+ "name" : " baz"
23+ },
24+ {
25+ "name" : " qux"
26+ },
27+ {
28+ "name" : " x"
29+ },
30+ {
31+ "name" : " y"
32+ },
33+ {
34+ "name" : " z"
35+ }
36+ ]
37+ },
38+ "cases" : [
39+ {
40+ "description" : " Let function with filters" ,
41+ "expression" : " let({search_for: search_for}, &people[?name==search_for].name | [0])" ,
42+ "result" : " foo"
43+ }
44+ ]
45+ },
46+ {
47+ "given" : {
48+ "a" : {
49+ "mylist" : [
50+ {
51+ "l1" : " 1" ,
52+ "result" : " foo"
53+ },
54+ {
55+ "l2" : " 2" ,
56+ "result" : " bar"
57+ },
58+ {
59+ "l1" : " 8" ,
60+ "l2" : " 9"
61+ },
62+ {
63+ "l1" : " 8" ,
64+ "l2" : " 9"
65+ }
66+ ],
67+ "level2" : " 2"
68+ },
69+ "level1" : " 1" ,
70+ "nested" : {
71+ "a" : {
72+ "b" : {
73+ "c" : {
74+ "fourth" : " fourth"
75+ },
76+ "third" : " third"
77+ },
78+ "second" : " second"
79+ },
80+ "first" : " first"
81+ },
82+ "precedence" : {
83+ "a" : {
84+ "b" : {
85+ "c" : {
86+ "variable" : " fourth"
87+ },
88+ "variable" : " third" ,
89+ "other" : " y"
90+ },
91+ "variable" : " second" ,
92+ "other" : " x"
93+ },
94+ "variable" : " first" ,
95+ "other" : " w"
96+ }
97+ },
98+ "cases" : [
99+ {
100+ "description" : " Basic let from scope" ,
101+ "expression" : " let({level1: level1}, &a.[level2, level1])" ,
102+ "result" : [
103+ " 2" ,
104+ " 1"
105+ ]
106+ },
107+ {
108+ "description" : " Current object has precedence" ,
109+ "expression" : " let({level1: `\" other\" `}, &level1)" ,
110+ "result" : " 1"
111+ },
112+ {
113+ "description" : " No scope specified using literal hash" ,
114+ "expression" : " let(`{}`, &a.level2)" ,
115+ "result" : " 2"
116+ },
117+ {
118+ "description" : " Arbitrary variable added" ,
119+ "expression" : " let({foo: `\" anything\" `}, &[level1, foo])" ,
120+ "result" : [
121+ " 1" ,
122+ " anything"
123+ ]
124+ },
125+ {
126+ "description" : " Basic let from current object" ,
127+ "expression" : " let({other: level1}, &level1)" ,
128+ "result" : " 1"
129+ },
130+ {
131+ "description" : " Nested let function with filters" ,
132+ "expression" : " let({level1: level1}, &a.[mylist[?l1==level1].result, let({level2: level2}, &mylist[?l2==level2].result)])[]" ,
133+ "result" : [
134+ " foo" ,
135+ " bar"
136+ ]
137+ },
138+ {
139+ "description" : " Nested let function with filters with literal scope binding" ,
140+ "expression" : " let(`{\" level1\" : \" 1\" }`, &a.[mylist[?l1==level1].result, let({level2: level2}, &mylist[?l2==level2].result)])[]" ,
141+ "result" : [
142+ " foo" ,
143+ " bar"
144+ ]
145+ },
146+ {
147+ "description" : " Nested let functions" ,
148+ "expression" : " nested.let({level1: first}, &a.let({level2: second}, &b.let({level3: third}, &c.{first: level1, second: level2, third: level3, fourth: fourth})))" ,
149+ "result" : {
150+ "first" : " first" ,
151+ "second" : " second" ,
152+ "third" : " third" ,
153+ "fourth" : " fourth"
154+ }
155+ },
156+ {
157+ "description" : " Precedence of lexical vars from scope object" ,
158+ "expression" : " precedence.let({other: other}, &a.let({other: other}, &b.let({other: other}, &c.{other: other})))" ,
159+ "result" : {
160+ "other" : " y"
161+ }
162+ },
163+ {
164+ "description" : " Precedence of lexical vars from current object" ,
165+ "expression" : " precedence.let({variable: variable}, &a.let({variable: variable}, &b.let({variable: variable}, &c.let({variable: `\" override\" `}, &variable))))" ,
166+ "result" : " fourth"
167+ }
168+ ]
169+ }
170170]
0 commit comments