|
227 | 227 | "{:r 1 :u}" :map))
|
228 | 228 |
|
229 | 229 | (deftest t-parsing-metadata
|
230 |
| - (are [?s ?t ?mt] |
231 |
| - (let [s (str ?s " s") |
232 |
| - n (p/parse-string s) |
233 |
| - [mta ws sym] (node/children n)] |
234 |
| - (is (= ?t (node/tag n))) |
235 |
| - (is (= s (node/string n))) |
236 |
| - (is (= 's (node/sexpr n))) |
237 |
| - (is (= {:private true} (meta (node/sexpr n)))) |
238 |
| - (is (= ?mt (node/tag mta))) |
239 |
| - (is (= :whitespace (node/tag ws))) |
240 |
| - (is (= :token (node/tag sym))) |
241 |
| - (is (= 's (node/sexpr sym)))) |
242 |
| - "^:private" :meta :token |
243 |
| - "^{:private true}" :meta :map |
244 |
| - "#^:private" :meta* :token |
245 |
| - "#^{:private true}" :meta* :map)) |
| 230 | + (doseq [[meta-str expected-tag expected-meta-child-tag] |
| 231 | + [["^:private" :meta :token] |
| 232 | + ["^{:private true}" :meta :map] |
| 233 | + ["#^:private" :meta* :token] |
| 234 | + ["#^{:private true}" :meta* :map]] |
| 235 | + :let [s (str meta-str " s") |
| 236 | + n (p/parse-string s) |
| 237 | + [meta-data ws target-sym] (node/children n)]] |
| 238 | + (is (= expected-tag (node/tag n))) |
| 239 | + (is (= s (node/string n))) |
| 240 | + (is (= 's (node/sexpr n))) |
| 241 | + (is (= {:private true} (meta (node/sexpr n)))) |
| 242 | + (is (= expected-meta-child-tag (node/tag meta-data))) |
| 243 | + (is (= :whitespace (node/tag ws))) |
| 244 | + (is (= :token (node/tag target-sym))) |
| 245 | + (is (= 's (node/sexpr target-sym))))) |
246 | 246 |
|
247 | 247 | (deftest t-parsing-multiple-metadata-forms
|
248 |
| - (are [?s ?expected-meta-tag ?expected-tag-on-metadata] |
249 |
| - (let [s (str ?s " s") |
250 |
| - n (p/parse-string s) |
251 |
| - [mdata ws inner-n] (node/children n) |
252 |
| - [inner-mdata inner-ws sym] (node/children inner-n)] |
253 |
| - ;; outer meta |
254 |
| - (is (= ?expected-meta-tag (node/tag n))) |
255 |
| - (is (= {:private true :awe true} (meta (node/sexpr n)))) |
256 |
| - (is (= ?expected-tag-on-metadata (node/tag mdata))) |
257 |
| - (is (= :whitespace (node/tag ws))) |
258 |
| - |
259 |
| - ;; inner meta |
260 |
| - (is (= ?expected-meta-tag (node/tag inner-n))) |
261 |
| - (is (= {:awe true} (meta (node/sexpr inner-n)))) |
262 |
| - (is (= ?expected-tag-on-metadata (node/tag inner-mdata))) |
263 |
| - (is (= :whitespace (node/tag inner-ws))) |
264 |
| - |
265 |
| - ;; symbol |
266 |
| - (is (= s (node/string n))) |
267 |
| - (is (= 's (node/sexpr sym)))) |
268 |
| - "^:private ^:awe" :meta :token |
269 |
| - "^{:private true} ^{:awe true}" :meta :map |
270 |
| - "#^:private #^:awe" :meta* :token |
271 |
| - "#^{:private true} #^{:awe true}" :meta* :map)) |
| 248 | + (doseq [[meta-str expected-meta-tag expected-tag-on-metadata] |
| 249 | + [["^:private ^:awe" :meta :token] |
| 250 | + ["^{:private true} ^{:awe true}" :meta :map] |
| 251 | + ["#^:private #^:awe" :meta* :token] |
| 252 | + ["#^{:private true} #^{:awe true}" :meta* :map]] |
| 253 | + :let [s (str meta-str " s") |
| 254 | + n (p/parse-string s) |
| 255 | + [meta-data ws inner-node] (node/children n) |
| 256 | + [inner-meta-data inner-ws target-sym] (node/children inner-node)]] |
| 257 | + ;; outer metadata |
| 258 | + (is (= expected-meta-tag (node/tag n))) |
| 259 | + (is (= {:private true :awe true} (meta (node/sexpr n)))) |
| 260 | + (is (= expected-tag-on-metadata (node/tag meta-data))) |
| 261 | + (is (= :whitespace (node/tag ws))) |
| 262 | + |
| 263 | + ;; inner metadata |
| 264 | + (is (= expected-meta-tag (node/tag inner-node))) |
| 265 | + (is (= {:awe true} (meta (node/sexpr inner-node)))) |
| 266 | + (is (= expected-tag-on-metadata (node/tag inner-meta-data))) |
| 267 | + (is (= :whitespace (node/tag inner-ws))) |
| 268 | + |
| 269 | + ;; target symbol |
| 270 | + (is (= s (node/string n))) |
| 271 | + (is (= 's (node/sexpr target-sym))))) |
272 | 272 |
|
273 | 273 | (deftest t-parsing-reader-macros
|
274 | 274 | (are [?s ?t ?children]
|
|
0 commit comments