Skip to content

Commit fb836ea

Browse files
committed
* alphabetize tests
* add missing cases / todos as comments
1 parent 69c0f84 commit fb836ea

File tree

2 files changed

+92
-52
lines changed

2 files changed

+92
-52
lines changed

src/test/clojure/cljs/analyzer/spec_tests.clj

+88-52
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@
1313
[clojure.test :as test :refer [deftest is]]
1414
[clojure.spec.alpha :as s]))
1515

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+
1624
(deftest test-const
1725
(is (s/valid? ::a/node (analyze ns-env 1)))
1826
(is (s/valid? ::a/node (analyze ns-env 1.2)))
@@ -31,31 +39,6 @@
3139
(is (= :set (:op node)))
3240
(is (s/valid? ::a/node node))))
3341

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-
5942
(deftest test-def
6043
(let [node (no-warn (analyze ns-env '(def x)))]
6144
(is (= :def (:op node)))
@@ -64,37 +47,38 @@
6447
(is (s/valid? ::a/node (analyze ns-env '(def x (fn [])))))
6548
(is (s/valid? ::a/node (analyze ns-env '(def x (fn [y] y))))))
6649

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-
7550
(deftest test-defn
7651
(is (s/valid? ::a/node (analyze ns-env '(defn x []))))
7752
(is (s/valid? ::a/node (analyze ns-env '(defn x [] 1))))
7853
(is (s/valid? ::a/node (analyze ns-env '(defn x [y] y)))))
7954

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))))
8760

8861
(deftest test-deftype
8962
(let [node (no-warn (analyze ns-env '(deftype A [])))]
9063
(is (= :deftype (-> node :statements first :op)))
9164
(is (s/valid? ::a/node node))))
9265

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
9882

9983
(deftest test-host-call
10084
(let [node (analyze ns-env '(.substring "foo" 0 1))]
@@ -112,11 +96,38 @@
11296
(is (= :host-field (:op node)))
11397
(is (s/valid? ::a/node node))))
11498

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+
115105
(deftest test-invoke
116106
(let [node (no-warn (analyze ns-env '(count "foo")))]
117107
(is (= :invoke (:op node)))
118108
(is (s/valid? ::a/node node))))
119109

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+
120131
(deftest test-loop
121132
(let [node (analyze ns-env '(loop []))]
122133
(is (= :loop (:op node)))
@@ -133,21 +144,46 @@
133144
x))))]
134145
(is (s/valid? ::a/node node))))
135146

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+
136165
(deftest test-recur
137166
(let [node (no-warn (analyze ns-env '(fn [x] (recur (inc x)))))]
138167
(is (s/valid? ::a/node node))))
139168

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)))
142178
(is (s/valid? ::a/node node))))
143179

144-
;; letfn
180+
;; try
145181

146-
;; local
182+
;; var
147183

148-
; TODO: #js
149-
;(deftest test-js-object
150-
; )
184+
;; vector
185+
186+
;; with-meta
151187

152188
(comment
153189

src/test/clojure/cljs/analyzer/specs.cljc

+4
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,10 @@
222222
(defmethod node :no-op [_]
223223
::base)
224224

225+
;; :ns
226+
227+
;; :ns*
228+
225229
(s/def ::expr ::node)
226230

227231
(defmethod node :quote [_]

0 commit comments

Comments
 (0)