1[
2 {
3 "given": {
4 "foo": [{"name": "a"}, {"name": "b"}],
5 "bar": {"baz": "qux"}
6 },
7 "cases": [
8 {
9 "expression": "`\"foo\"`",
10 "result": "foo"
11 },
12 {
13 "comment": "Interpret escaped unicode.",
14 "expression": "`\"\\u03a6\"`",
15 "result": "Φ"
16 },
17 {
18 "expression": "`\"✓\"`",
19 "result": "✓"
20 },
21 {
22 "expression": "`[1, 2, 3]`",
23 "result": [1, 2, 3]
24 },
25 {
26 "expression": "`{\"a\": \"b\"}`",
27 "result": {"a": "b"}
28 },
29 {
30 "expression": "`true`",
31 "result": true
32 },
33 {
34 "expression": "`false`",
35 "result": false
36 },
37 {
38 "expression": "`null`",
39 "result": null
40 },
41 {
42 "expression": "`0`",
43 "result": 0
44 },
45 {
46 "expression": "`1`",
47 "result": 1
48 },
49 {
50 "expression": "`2`",
51 "result": 2
52 },
53 {
54 "expression": "`3`",
55 "result": 3
56 },
57 {
58 "expression": "`4`",
59 "result": 4
60 },
61 {
62 "expression": "`5`",
63 "result": 5
64 },
65 {
66 "expression": "`6`",
67 "result": 6
68 },
69 {
70 "expression": "`7`",
71 "result": 7
72 },
73 {
74 "expression": "`8`",
75 "result": 8
76 },
77 {
78 "expression": "`9`",
79 "result": 9
80 },
81 {
82 "comment": "Escaping a backtick in quotes",
83 "expression": "`\"foo\\`bar\"`",
84 "result": "foo`bar"
85 },
86 {
87 "comment": "Double quote in literal",
88 "expression": "`\"foo\\\"bar\"`",
89 "result": "foo\"bar"
90 },
91 {
92 "expression": "`\"1\\`\"`",
93 "result": "1`"
94 },
95 {
96 "comment": "Multiple literal expressions with escapes",
97 "expression": "`\"\\\\\"`.{a:`\"b\"`}",
98 "result": {"a": "b"}
99 },
100 {
101 "comment": "literal . identifier",
102 "expression": "`{\"a\": \"b\"}`.a",
103 "result": "b"
104 },
105 {
106 "comment": "literal . identifier . identifier",
107 "expression": "`{\"a\": {\"b\": \"c\"}}`.a.b",
108 "result": "c"
109 },
110 {
111 "comment": "literal . identifier bracket-expr",
112 "expression": "`[0, 1, 2]`[1]",
113 "result": 1
114 }
115 ]
116 },
117 {
118 "comment": "Literals",
119 "given": {"type": "object"},
120 "cases": [
121 {
122 "comment": "Literal with leading whitespace",
123 "expression": "` {\"foo\": true}`",
124 "result": {"foo": true}
125 },
126 {
127 "comment": "Literal with trailing whitespace",
128 "expression": "`{\"foo\": true} `",
129 "result": {"foo": true}
130 },
131 {
132 "comment": "Literal on RHS of subexpr not allowed",
133 "expression": "foo.`\"bar\"`",
134 "error": "syntax"
135 }
136 ]
137 },
138 {
139 "comment": "Raw String Literals",
140 "given": {},
141 "cases": [
142 {
143 "expression": "'foo'",
144 "result": "foo"
145 },
146 {
147 "expression": "' foo '",
148 "result": " foo "
149 },
150 {
151 "expression": "'0'",
152 "result": "0"
153 },
154 {
155 "expression": "'newline\n'",
156 "result": "newline\n"
157 },
158 {
159 "expression": "'\n'",
160 "result": "\n"
161 },
162 {
163 "expression": "'✓'",
164 "result": "✓"
165 },
166 {
167 "expression": "'𝄞'",
168 "result": "𝄞"
169 },
170 {
171 "expression": "' [foo] '",
172 "result": " [foo] "
173 },
174 {
175 "expression": "'[foo]'",
176 "result": "[foo]"
177 },
178 {
179 "comment": "Do not interpret escaped unicode.",
180 "expression": "'\\u03a6'",
181 "result": "\\u03a6"
182 }
183 ]
184 }
185]
View as plain text