/
quasiquote.clj
33 lines (31 loc) · 1.06 KB
/
quasiquote.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
(ns syntactic-closure.test.quasiquote
(:use [syntactic-closure.core :only [quasiquote]]
[clojure.test :only [deftest is]]))
(def x 101)
(def xs [102 103 104])
(deftest test-quasiquote
(is (= (quasiquote ())
'()))
(is (= (quasiquote ~x)
101))
(is (= (quasiquote (0 1 2))
'(0 1 2)))
(is (= (quasiquote (0 ~x 2))
'(0 101 2)))
(is (= (quasiquote (~x))
'(101)))
(is (= (quasiquote (1 ~@xs 5))
'(1 102 103 104 5)))
(is (= (quasiquote (~@xs))
'(102 103 104)))
(is (= (quasiquote [1 ~@xs 5])
[1 102 103 104 5]))
(is (= (quasiquote {0 1 ~@xs 5})
{0 1 102 103 104 5}))
(is (= (quasiquote (0 (quasiquote (~x ~@xs))))
'(0 (quasiquote (~x ~@xs)))))
(is (= (quasiquote (0 (quasiquote ~'(~x ~@xs))))
'(0 (quasiquote (clojure.core/unquote (quote (101 102 103 104)))))))
(is (= (quasiquote (0 (quasiquote (~~x ~~@xs))))
'(0 (quasiquote ((clojure.core/unquote 101)
(clojure.core/unquote (clojure.core/unquote-splicing xs))))))))