1{
2 "property-basics": [
3 {
4 "expr": "foo.bar",
5 "contexts": {
6 "foo": {
7 "bar": "baz"
8 }
9 },
10 "result": { "kind": "String", "value": "baz" }
11 },
12 {
13 "expr": "foo.Bar",
14 "contexts": {
15 "foo": {
16 "Bar": "baz"
17 }
18 },
19 "result": { "kind": "String", "value": "baz" }
20 },
21 {
22 "expr": "foo.b",
23 "contexts": {
24 "foo": {
25 "b": "baz"
26 }
27 },
28 "result": { "kind": "String", "value": "baz" }
29 },
30 {
31 "expr": "foo._",
32 "contexts": {
33 "foo": {
34 "_": "baz"
35 }
36 },
37 "result": { "kind": "String", "value": "baz" }
38 },
39 {
40 "expr": "foo._bar",
41 "contexts": {
42 "foo": {
43 "_bar": "baz"
44 }
45 },
46 "result": { "kind": "String", "value": "baz" }
47 },
48 {
49 "expr": "foo.b_ar",
50 "contexts": {
51 "foo": {
52 "b_ar": "baz"
53 }
54 },
55 "result": { "kind": "String", "value": "baz" }
56 },
57 {
58 "expr": "foo.b-ar",
59 "contexts": {
60 "foo": {
61 "b-ar": "baz"
62 }
63 },
64 "result": { "kind": "String", "value": "baz" }
65 },
66 {
67 "expr": "fromJson('{\"one\": \"one val\"}').one",
68 "result": { "kind": "String", "value": "one val" }
69 },
70 {
71 "expr": "(fromJson('{\"one\": \"one val\"}')).one",
72 "result": { "kind": "String", "value": "one val" }
73 },
74 {
75 "expr": "foo[*]",
76 "contexts": {
77 "foo": {
78 "one": "one val",
79 "two": "two val"
80 }
81 },
82 "result": { "kind": "Array", "value": ["one val", "two val"] }
83 }
84 ],
85 "property-case-insensitive": [
86 {
87 "expr": "foo.bar",
88 "contexts": {
89 "foo": {
90 "BAR": "baz"
91 }
92 },
93 "result": { "kind": "String", "value": "baz" }
94 },
95 {
96 "expr": "foo.BAR",
97 "contexts": {
98 "foo": {
99 "bar": "baz"
100 }
101 },
102 "result": { "kind": "String", "value": "baz" }
103 }
104 ],
105 "property-matches-const": [
106 {
107 "expr": "foo.true",
108 "contexts": {
109 "foo": {
110 "true": "it's true"
111 }
112 },
113 "result": { "kind": "String", "value": "it's true" }
114 },
115 {
116 "expr": "foo.false",
117 "contexts": {
118 "foo": {
119 "false": "it's false"
120 }
121 },
122 "result": { "kind": "String", "value": "it's false" }
123 },
124 {
125 "expr": "foo.Infinity",
126 "contexts": {
127 "foo": {
128 "Infinity": "it's Infinity"
129 }
130 },
131 "result": { "kind": "String", "value": "it's Infinity" }
132 },
133 {
134 "expr": "foo.NaN",
135 "contexts": {
136 "foo": {
137 "NaN": "it's NaN"
138 }
139 },
140 "result": { "kind": "String", "value": "it's NaN" }
141 },
142 {
143 "expr": "foo.null",
144 "contexts": {
145 "foo": {
146 "null": "it's null"
147 }
148 },
149 "result": { "kind": "String", "value": "it's null" }
150 },
151 {
152 "expr": "foo.format",
153 "contexts": {
154 "foo": {
155 "format": "it's format"
156 }
157 },
158 "result": { "kind": "String", "value": "it's format" }
159 }
160 ],
161 "property-errors": [
162 {
163 "expr": "foo.b@r",
164 "contexts": {
165 "foo": {
166 "b@r": "baz"
167 }
168 },
169 "err": {
170 "kind": "lexing",
171 "value": "Unexpected symbol: 'b@r'. Located at position 5 within expression: foo.b@r"
172 }
173 },
174 {
175 "expr": "foo.1",
176 "contexts": {
177 "foo": {}
178 },
179 "err": {
180 "kind": "parsing",
181 "value": "Unexpected symbol: '1'. Located at position 5 within expression: foo.1"
182 }
183 },
184 {
185 "expr": "fromjson('').1",
186 "err": {
187 "kind": "parsing",
188 "value": "Unexpected symbol: '1'. Located at position 14 within expression: fromjson('').1"
189 }
190 },
191 {
192 "expr": "foo[1].2",
193 "contexts": {
194 "foo": {}
195 },
196 "err": {
197 "kind": "parsing",
198 "value": "Unexpected symbol: '2'. Located at position 8 within expression: foo[1].2"
199 }
200 }
201 ]
202}