|
13 | 13 | [clojure.test :as test :refer [deftest is]]
|
14 | 14 | [clojure.spec.alpha :as s]))
|
15 | 15 |
|
| 16 | +(deftest test-case |
| 17 | + (let [node (no-warn (analyze ns-env '(case x 1 :foo 2 :bar)))] |
| 18 | + (is (s/valid? ::a/node node)))) |
| 19 | + |
| 20 | +;; case-node |
| 21 | +;; case-test |
| 22 | +;; case-then |
| 23 | + |
16 | 24 | (deftest test-const
|
17 | 25 | (is (s/valid? ::a/node (analyze ns-env 1)))
|
18 | 26 | (is (s/valid? ::a/node (analyze ns-env 1.2)))
|
|
31 | 39 | (is (= :set (:op node)))
|
32 | 40 | (is (s/valid? ::a/node node))))
|
33 | 41 |
|
34 |
| -(deftest test-if |
35 |
| - (let [node (analyze ns-env '(if true true))] |
36 |
| - (is (= :if (:op node))) |
37 |
| - (is (s/valid? ::a/node node))) |
38 |
| - (is (s/valid? ::a/node (analyze ns-env '(if true true false))))) |
39 |
| - |
40 |
| -(deftest test-do |
41 |
| - (let [node (analyze ns-env '(do))] |
42 |
| - (is (= :do (:op node))) |
43 |
| - (is (s/valid? ::a/node node))) |
44 |
| - (is (s/valid? ::a/node (analyze ns-env '(do 1)))) |
45 |
| - (is (s/valid? ::a/node (analyze ns-env '(do 1 2 3))))) |
46 |
| - |
47 |
| -(deftest test-let |
48 |
| - (let [node (analyze ns-env '(let []))] |
49 |
| - (is (= :let (:op node))) |
50 |
| - (is (s/valid? ::a/node node))) |
51 |
| - (is (s/valid? ::a/node (analyze ns-env '(let [x 1])))) |
52 |
| - (is (s/valid? ::a/node (analyze ns-env '(let [x 1] x))))) |
53 |
| - |
54 |
| -(deftest test-throw |
55 |
| - (let [node (no-warn (analyze ns-env '(throw (js/Error. "foo"))))] |
56 |
| - (is (= :throw (:op node))) |
57 |
| - (is (s/valid? ::a/node node)))) |
58 |
| - |
59 | 42 | (deftest test-def
|
60 | 43 | (let [node (no-warn (analyze ns-env '(def x)))]
|
61 | 44 | (is (= :def (:op node)))
|
|
64 | 47 | (is (s/valid? ::a/node (analyze ns-env '(def x (fn [])))))
|
65 | 48 | (is (s/valid? ::a/node (analyze ns-env '(def x (fn [y] y))))))
|
66 | 49 |
|
67 |
| -(deftest test-fn |
68 |
| - (let [node (no-warn (analyze ns-env '(fn [])))] |
69 |
| - (is (= :fn (:op node))) |
70 |
| - (is (s/valid? ::a/node node))) |
71 |
| - (is (s/valid? ::a/node (analyze ns-env '(fn [] 1)))) |
72 |
| - (is (s/valid? ::a/node (analyze ns-env '(fn [x])))) |
73 |
| - (is (s/valid? ::a/node (analyze ns-env '(fn [x] 1))))) |
74 |
| - |
75 | 50 | (deftest test-defn
|
76 | 51 | (is (s/valid? ::a/node (analyze ns-env '(defn x []))))
|
77 | 52 | (is (s/valid? ::a/node (analyze ns-env '(defn x [] 1))))
|
78 | 53 | (is (s/valid? ::a/node (analyze ns-env '(defn x [y] y)))))
|
79 | 54 |
|
80 |
| -(deftest test-new |
81 |
| - (let [node (no-warn (analyze ns-env '(new String)))] |
82 |
| - (is (= :new (:op node))) |
83 |
| - (is (s/valid? ::a/node node))) |
84 |
| - (is (s/valid? ::a/node (analyze ns-env '(new js/String)))) |
85 |
| - (is (s/valid? ::a/node (no-warn (analyze ns-env '(String.))))) |
86 |
| - (is (s/valid? ::a/node (analyze ns-env '(js/String.))))) |
| 55 | +(deftest test-defrecord |
| 56 | + (let [node (no-warn (analyze ns-env '(defrecord A []))) |
| 57 | + body (:body node)] |
| 58 | + (is (= :defrecord (-> body :statements first :ret :op))) |
| 59 | + (is (s/valid? ::a/node node)))) |
87 | 60 |
|
88 | 61 | (deftest test-deftype
|
89 | 62 | (let [node (no-warn (analyze ns-env '(deftype A [])))]
|
90 | 63 | (is (= :deftype (-> node :statements first :op)))
|
91 | 64 | (is (s/valid? ::a/node node))))
|
92 | 65 |
|
93 |
| -(deftest test-defrecord |
94 |
| - (let [node (no-warn (analyze ns-env '(defrecord A []))) |
95 |
| - body (:body node)] |
96 |
| - (is (= :defrecord (-> body :statements first :ret :op))) |
97 |
| - (is (s/valid? ::a/node node)))) |
| 66 | +(deftest test-do |
| 67 | + (let [node (analyze ns-env '(do))] |
| 68 | + (is (= :do (:op node))) |
| 69 | + (is (s/valid? ::a/node node))) |
| 70 | + (is (s/valid? ::a/node (analyze ns-env '(do 1)))) |
| 71 | + (is (s/valid? ::a/node (analyze ns-env '(do 1 2 3))))) |
| 72 | + |
| 73 | +(deftest test-fn |
| 74 | + (let [node (no-warn (analyze ns-env '(fn [])))] |
| 75 | + (is (= :fn (:op node))) |
| 76 | + (is (s/valid? ::a/node node))) |
| 77 | + (is (s/valid? ::a/node (analyze ns-env '(fn [] 1)))) |
| 78 | + (is (s/valid? ::a/node (analyze ns-env '(fn [x])))) |
| 79 | + (is (s/valid? ::a/node (analyze ns-env '(fn [x] 1))))) |
| 80 | + |
| 81 | +;; fn-method |
98 | 82 |
|
99 | 83 | (deftest test-host-call
|
100 | 84 | (let [node (analyze ns-env '(.substring "foo" 0 1))]
|
|
112 | 96 | (is (= :host-field (:op node)))
|
113 | 97 | (is (s/valid? ::a/node node))))
|
114 | 98 |
|
| 99 | +(deftest test-if |
| 100 | + (let [node (analyze ns-env '(if true true))] |
| 101 | + (is (= :if (:op node))) |
| 102 | + (is (s/valid? ::a/node node))) |
| 103 | + (is (s/valid? ::a/node (analyze ns-env '(if true true false))))) |
| 104 | + |
115 | 105 | (deftest test-invoke
|
116 | 106 | (let [node (no-warn (analyze ns-env '(count "foo")))]
|
117 | 107 | (is (= :invoke (:op node)))
|
118 | 108 | (is (s/valid? ::a/node node))))
|
119 | 109 |
|
| 110 | +;; js-array |
| 111 | + |
| 112 | +;; js-object |
| 113 | +;(deftest test-js-object |
| 114 | +; ) |
| 115 | + |
| 116 | +;; js-var |
| 117 | + |
| 118 | +(deftest test-let |
| 119 | + (let [node (analyze ns-env '(let []))] |
| 120 | + (is (= :let (:op node))) |
| 121 | + (is (s/valid? ::a/node node))) |
| 122 | + (is (s/valid? ::a/node (analyze ns-env '(let [x 1])))) |
| 123 | + (is (s/valid? ::a/node (analyze ns-env '(let [x 1] x))))) |
| 124 | + |
| 125 | +;; letfn |
| 126 | + |
| 127 | +;; list |
| 128 | + |
| 129 | +;; local |
| 130 | + |
120 | 131 | (deftest test-loop
|
121 | 132 | (let [node (analyze ns-env '(loop []))]
|
122 | 133 | (is (= :loop (:op node)))
|
|
133 | 144 | x))))]
|
134 | 145 | (is (s/valid? ::a/node node))))
|
135 | 146 |
|
| 147 | +;; map |
| 148 | + |
| 149 | +(deftest test-new |
| 150 | + (let [node (no-warn (analyze ns-env '(new String)))] |
| 151 | + (is (= :new (:op node))) |
| 152 | + (is (s/valid? ::a/node node))) |
| 153 | + (is (s/valid? ::a/node (analyze ns-env '(new js/String)))) |
| 154 | + (is (s/valid? ::a/node (no-warn (analyze ns-env '(String.))))) |
| 155 | + (is (s/valid? ::a/node (analyze ns-env '(js/String.))))) |
| 156 | + |
| 157 | +;; no-op |
| 158 | + |
| 159 | +;; ns |
| 160 | + |
| 161 | +;; ns* |
| 162 | + |
| 163 | +;; quote |
| 164 | + |
136 | 165 | (deftest test-recur
|
137 | 166 | (let [node (no-warn (analyze ns-env '(fn [x] (recur (inc x)))))]
|
138 | 167 | (is (s/valid? ::a/node node))))
|
139 | 168 |
|
140 |
| -(deftest test-case |
141 |
| - (let [node (no-warn (analyze ns-env '(case x 1 :foo 2 :bar)))] |
| 169 | +;; set |
| 170 | + |
| 171 | +;; set! |
| 172 | + |
| 173 | +;; the-var |
| 174 | + |
| 175 | +(deftest test-throw |
| 176 | + (let [node (no-warn (analyze ns-env '(throw (js/Error. "foo"))))] |
| 177 | + (is (= :throw (:op node))) |
142 | 178 | (is (s/valid? ::a/node node))))
|
143 | 179 |
|
144 |
| -;; letfn |
| 180 | +;; try |
145 | 181 |
|
146 |
| -;; local |
| 182 | +;; var |
147 | 183 |
|
148 |
| -; TODO: #js |
149 |
| -;(deftest test-js-object |
150 |
| -; ) |
| 184 | +;; vector |
| 185 | + |
| 186 | +;; with-meta |
151 | 187 |
|
152 | 188 | (comment
|
153 | 189 |
|
|
0 commit comments