Skip to content

Commit 9c0d0d2

Browse files
author
dnolen
committed
move more primitives, destructuring test ns
1 parent 1e739e7 commit 9c0d0d2

File tree

5 files changed

+236
-219
lines changed

5 files changed

+236
-219
lines changed

src/test/cljs/cljs/core_test.cljs

Lines changed: 0 additions & 219 deletions
Original file line numberDiff line numberDiff line change
@@ -446,78 +446,6 @@
446446
(is (= (distinct [#{1 2} #{1 2}]) [#{1 2}]))
447447
(is (= (distinct [#{} #{}]) [#{}]))))
448448

449-
(deftest test-destructuring
450-
(testing "Testing destructuring"
451-
(is (= [2 1] (let [[a b] [1 2]] [b a])))
452-
(is (= #{1 2} (let [[a b] [1 2]] #{a b})))
453-
(is (= [1 2] (let [{a :a b :b} {:a 1 :b 2}] [a b])))
454-
(is (= [1 2] (let [{:keys [a b]} {:a 1 :b 2}] [a b])))
455-
(is (= [1 2 [1 2]] (let [[a b :as v] [1 2]] [a b v])))
456-
(is (= [1 42] (let [{:keys [a b] :or {b 42}} {:a 1}] [a b])))
457-
(is (= [1 nil] (let [{:keys [a b] :or {c 42}} {:a 1}] [a b])))
458-
(is (= [2 1] (let [[a b] '(1 2)] [b a])))
459-
(is (= {1 2} (let [[a b] [1 2]] {a b})))
460-
(is (= [2 1] (let [[a b] (seq [1 2])] [b a])))
461-
(testing "namespaced keys"
462-
(let [{:keys [:a :b]} {:a 1 :b 2}]
463-
(testing "basic"
464-
(is (= 1 a))
465-
(is (= 2 b))))
466-
(let [{:keys [:a/b :c/d]} {:a/b 1 :c/d 2}]
467-
(testing "keyword syntax"
468-
(is (= 1 b))
469-
(is (= 2 d))))
470-
(let [{:keys [a/b c/d]} {:a/b 1 :c/d 2}]
471-
(testing "symbol syntax"
472-
(is (= 1 b))
473-
(is (= 2 d))))
474-
(let [{:syms [a/b c/d]} {'a/b 1 'c/d 2}]
475-
(testing ":syms"
476-
(is (= 1 b))
477-
(is (= 2 d))))
478-
(let [{:keys [::s/x ::s/y]} {:clojure.string/x 1 :clojure.string/y 2}]
479-
(testing ":keys"
480-
(is (= x 1))
481-
(is (= y 2))))
482-
)))
483-
484-
(deftest keywords-in-destructuring
485-
(let [m {:a 1 :b 2}]
486-
(let [{:keys [:a :b]} m]
487-
(is (= [1 2] [a b])))
488-
(let [{:keys [:a :b :c] :or {c 3}} m]
489-
(is (= [1 2 3] [a b c])))))
490-
491-
(deftest namespaced-keywords-in-destructuring
492-
(let [m {:a/b 1 :c/d 2}]
493-
(let [{:keys [:a/b :c/d]} m]
494-
(is (= [1 2] [b d])))
495-
(let [{:keys [:a/b :c/d :e/f] :or {f 3}} m]
496-
(is (= [1 2 3] [b d f])))))
497-
498-
(deftest namespaced-keys-in-destructuring
499-
(let [m {:a/b 1 :c/d 2}]
500-
(let [{:keys [a/b c/d]} m]
501-
(is (= [1 2] [b d])))
502-
(let [{:keys [a/b c/d e/f] :or {f 3}} m]
503-
(is (= [1 2 3] [b d f])))))
504-
505-
(deftest namespaced-syms-in-destructuring
506-
(let [{:syms [a/b c/d e/f] :or {f 3}} {'a/b 1 'c/d 2}]
507-
(is (= [1 2 3] [b d f]))))
508-
509-
(deftest namespaced-keys-syntax
510-
(let [{:a/keys [b c d] :or {d 3}} {:a/b 1 :a/c 2}]
511-
(is (= [1 2 3] [b c d]))))
512-
513-
(deftest namespaced-syms-syntax
514-
(let [{:a/syms [b c d] :or {d 3}} {'a/b 1 'a/c 2}]
515-
(is (= [1 2 3] [b c d]))))
516-
517-
(deftest resolve-keyword-ns-alias-in-destructuring
518-
(let [{:keys [::s/x ::s/y ::s/z] :or {z 3}} {:clojure.string/x 1 :clojure.string/y 2}]
519-
(is (= [1 2 3] [x y z]))))
520-
521449
(deftest test-in-operations
522450
(testing "Testing update-in"
523451
(is (= {:foo {:bar {:baz 1}}}
@@ -546,76 +474,6 @@
546474
[1 :bar 1 :buzz]))))
547475
)
548476

549-
(deftest test-arrays
550-
(testing "Testing array operations"
551-
(let [a (to-array [1 2 3])]
552-
(testing "basic ops"
553-
(is (= [10 20 30] (seq (amap a i ret (* 10 (aget a i))))))
554-
(is (= 6 (areduce a i ret 0 (+ ret (aget a i)))))
555-
(is (= (seq a) (seq (to-array [1 2 3]))))
556-
(is (= 42 (aset a 0 42)))
557-
(is (not= (seq a) (seq (to-array [1 2 3]))))
558-
(is (not= a (aclone a)))))
559-
(let [a (array (array 1 2 3) (array 4 5 6))]
560-
(testing "aget"
561-
(is (= (aget a 0 1) 2))
562-
(is (= (apply aget a [0 1]) 2))
563-
(is (= (aget a 1 1) 5))
564-
(is (= (apply aget a [1 1]) 5))
565-
(aset a 0 0 "foo")
566-
(is (= (aget a 0 0) "foo"))
567-
(apply aset a [0 0 "bar"])
568-
(is (= (aget a 0 0) "bar"))))))
569-
570-
(defn- primitive-arrays-equal
571-
[a b]
572-
(= (js->clj a) (js->clj b)))
573-
574-
(deftest test-make-array
575-
(testing "Testing make-array"
576-
(is (primitive-arrays-equal #js [] (make-array 0)))
577-
(is (primitive-arrays-equal #js [] (apply make-array [0])))
578-
(is (primitive-arrays-equal #js [nil] (make-array 1)))
579-
(is (primitive-arrays-equal #js [nil] (apply make-array [1])))
580-
(is (primitive-arrays-equal #js [nil nil] (make-array 2)))
581-
(is (primitive-arrays-equal #js [nil nil] (apply make-array [2])))
582-
(is (primitive-arrays-equal #js [] (make-array nil 0)))
583-
(is (primitive-arrays-equal #js [] (apply make-array [nil 0])))
584-
(is (primitive-arrays-equal #js [nil] (make-array nil 1)))
585-
(is (primitive-arrays-equal #js [nil] (apply make-array [nil 1])))
586-
(is (primitive-arrays-equal #js [nil nil] (make-array nil 2)))
587-
(is (primitive-arrays-equal #js [nil nil] (apply make-array [nil 2])))
588-
(is (primitive-arrays-equal #js [] (make-array nil 0 0)))
589-
(is (primitive-arrays-equal #js [] (apply make-array [nil 0 0])))
590-
(is (primitive-arrays-equal #js [] (make-array nil 0 1)))
591-
(is (primitive-arrays-equal #js [] (apply make-array [nil 0 1])))
592-
(is (primitive-arrays-equal #js [#js []] (make-array nil 1 0)))
593-
(is (primitive-arrays-equal #js [#js []] (apply make-array [nil 1 0])))
594-
(is (primitive-arrays-equal #js [#js [] #js []] (make-array nil 2 0)))
595-
(is (primitive-arrays-equal #js [#js [] #js []] (apply make-array [nil 2 0])))
596-
(is (primitive-arrays-equal #js [#js [nil]] (make-array nil 1 1)))
597-
(is (primitive-arrays-equal #js [#js [nil]] (apply make-array [nil 1 1])))
598-
(is (primitive-arrays-equal #js [#js [nil] #js [nil]] (make-array nil 2 1)))
599-
(is (primitive-arrays-equal #js [#js [nil] #js [nil]] (apply make-array [nil 2 1])))
600-
(is (primitive-arrays-equal #js [#js [nil nil] #js [nil nil]] (make-array nil 2 2)))
601-
(is (primitive-arrays-equal #js [#js [nil nil] #js [nil nil]] (apply make-array [nil 2 2])))
602-
(is (primitive-arrays-equal #js [] (make-array nil 0 0 0)))
603-
(is (primitive-arrays-equal #js [] (apply make-array [nil 0 0 0])))
604-
(is (primitive-arrays-equal #js [] (make-array nil 0 1 1)))
605-
(is (primitive-arrays-equal #js [] (apply make-array [nil 0 1 1])))
606-
(is (primitive-arrays-equal #js [#js []] (make-array nil 1 0 0)))
607-
(is (primitive-arrays-equal #js [#js []] (apply make-array [nil 1 0 0])))
608-
(is (primitive-arrays-equal #js [#js [] #js []] (make-array nil 2 0 0)))
609-
(is (primitive-arrays-equal #js [#js [] #js []] (apply make-array [nil 2 0 0])))
610-
(is (primitive-arrays-equal #js [#js [#js []]] (make-array nil 1 1 0)))
611-
(is (primitive-arrays-equal #js [#js [#js []]] (apply make-array [nil 1 1 0])))
612-
(is (primitive-arrays-equal #js [#js [#js [nil]]] (make-array nil 1 1 1)))
613-
(is (primitive-arrays-equal #js [#js [#js [nil]]] (apply make-array [nil 1 1 1])))
614-
(is (primitive-arrays-equal #js [#js [#js [nil nil] #js [nil nil]] #js [#js [nil nil] #js [nil nil]]]
615-
(make-array nil 2 2 2)))
616-
(is (primitive-arrays-equal #js [#js [#js [nil nil] #js [nil nil]] #js [#js [nil nil] #js [nil nil]]]
617-
(apply make-array [nil 2 2 2])))))
618-
619477
(deftest test-rearrange-sequential
620478
(testing "Test rearranging sequential collections"
621479
(is (= [1 2 3 4 5] (sort [5 3 1 4 2])))
@@ -1354,83 +1212,6 @@
13541212
(is (= expected (hash uuid)))
13551213
(is (= expected (.-__hash uuid))))))
13561214

1357-
(deftest test-comparable
1358-
(testing "Testing IComparable"
1359-
(is (= 0 (compare false false)))
1360-
(is (= -1 (compare false true)))
1361-
(is (= 1 (compare true false)))
1362-
1363-
(is (= -1 (compare 0 1)))
1364-
(is (= -1 (compare -1 1)))
1365-
(is (= 0 (compare 1 1)))
1366-
(is (= 1 (compare 1 0)))
1367-
(is (= 1 (compare 1 -1)))
1368-
1369-
(is (= 0 (compare "cljs" "cljs")))
1370-
(is (= 0 (compare :cljs :cljs)))
1371-
(is (= 0 (compare 'cljs 'cljs)))
1372-
(is (= -1 (compare "a" "b")))
1373-
(is (= -1 (compare :a :b)))
1374-
(is (= -1 (compare 'a 'b)))
1375-
;; cases involving ns
1376-
(is (= -1 (compare :b/a :c/a)))
1377-
(is (= -1 (compare :c :a/b)))
1378-
(is (= 1 (compare :a/b :c)))
1379-
(is (= -1 (compare 'b/a 'c/a)))
1380-
(is (= -1 (compare 'c 'a/b)))
1381-
(is (= 1 (compare 'a/b 'c)))
1382-
1383-
;; This is different from clj. clj gives -2 next 3 tests
1384-
(is (= -1 (compare "a" "c")))
1385-
(is (= -1 (compare :a :c)))
1386-
(is (= -1 (compare 'a 'c)))
1387-
1388-
(is (= -1 (compare [1 2] [1 1 1])))
1389-
(is (= -1 (compare [1 2] [1 2 1])))
1390-
(is (= -1 (compare [1 1] [1 2])))
1391-
(is (= 0 (compare [1 2] [1 2])))
1392-
(is (= 1 (compare [1 2] [1 1])))
1393-
(is (= 1 (compare [1 1 1] [1 2])))
1394-
(is (= 1 (compare [1 1 2] [1 1 1])))
1395-
(is (= 0 (compare [] [])))
1396-
(is (= 0 (compare (vec #js []) [])))
1397-
(is (= 0 (compare (with-meta [] {}) [])))
1398-
(is (= 0 (compare (pop [1]) [])))
1399-
1400-
(is (= -1 (compare (subvec [1 2 3] 1) (subvec [1 2 4] 1))))
1401-
(is (= 0 (compare (subvec [1 2 3] 1) (subvec [1 2 3] 1))))
1402-
(is (= 1 (compare (subvec [1 2 4] 1) (subvec [1 2 3] 1))))
1403-
(is (= 0 (compare (subvec [1] 0 0) (subvec [2] 0 0))))
1404-
1405-
(is (= 0 (compare (js/Date. 2015 2 8 19 13 00 999)
1406-
(js/Date. 2015 2 8 19 13 00 999))))
1407-
(is (= -1 (compare (js/Date. 2015 2 8 19 12 00 999)
1408-
(js/Date. 2015 2 8 19 13 00 999))))
1409-
(is (= 1 (compare (js/Date. 2015 2 8 19 14 00 999)
1410-
(js/Date. 2015 2 8 19 13 00 999))))
1411-
))
1412-
1413-
(deftest test-dot
1414-
(let [s "abc"]
1415-
(testing "Testing dot operations"
1416-
(is (= 3 (.-length s)))
1417-
(is (= 3 (. s -length)))
1418-
(is (= 3 (. (str 138) -length)))
1419-
(is (= 3 (. "abc" -length)))
1420-
(is (= "bc" (.substring s 1)))
1421-
(is (= "bc" (.substring "abc" 1)))
1422-
(is (= "bc" ((memfn substring start) s 1)))
1423-
(is (= "bc" (. s substring 1)))
1424-
(is (= "bc" (. s (substring 1))))
1425-
(is (= "bc" (. s (substring 1 3))))
1426-
(is (= "bc" (.substring s 1 3)))
1427-
(is (= "ABC" (. s (toUpperCase))))
1428-
(is (= "ABC" (. "abc" (toUpperCase))))
1429-
(is (= "ABC" ((memfn toUpperCase) s)))
1430-
(is (= "BC" (. (. s (toUpperCase)) substring 1)))
1431-
(is (= 2 (.-length (. (. s (toUpperCase)) substring 1))))
1432-
)))
1433-
14341215
(defrecord Person [firstname lastname])
14351216
(defrecord A [])
14361217
(defrecord C [a b c])
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
; Copyright (c) Rich Hickey. All rights reserved.
2+
; The use and distribution terms for this software are covered by the
3+
; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
4+
; which can be found in the file epl-v10.html at the root of this distribution.
5+
; By using this software in any fashion, you are agreeing to be bound by
6+
; the terms of this license.
7+
; You must not remove this notice, or any other, from this software.
8+
9+
(ns cljs.destructuring-test
10+
(:refer-clojure :exclude [iter])
11+
(:require [cljs.test :refer-macros [deftest testing is]]
12+
[clojure.string :as s]
13+
[clojure.set :as set]))
14+
15+
(deftest test-destructuring
16+
(testing "Testing destructuring"
17+
(is (= [2 1] (let [[a b] [1 2]] [b a])))
18+
(is (= #{1 2} (let [[a b] [1 2]] #{a b})))
19+
(is (= [1 2] (let [{a :a b :b} {:a 1 :b 2}] [a b])))
20+
(is (= [1 2] (let [{:keys [a b]} {:a 1 :b 2}] [a b])))
21+
(is (= [1 2 [1 2]] (let [[a b :as v] [1 2]] [a b v])))
22+
(is (= [1 42] (let [{:keys [a b] :or {b 42}} {:a 1}] [a b])))
23+
(is (= [1 nil] (let [{:keys [a b] :or {c 42}} {:a 1}] [a b])))
24+
(is (= [2 1] (let [[a b] '(1 2)] [b a])))
25+
(is (= {1 2} (let [[a b] [1 2]] {a b})))
26+
(is (= [2 1] (let [[a b] (seq [1 2])] [b a])))
27+
(testing "namespaced keys"
28+
(let [{:keys [:a :b]} {:a 1 :b 2}]
29+
(testing "basic"
30+
(is (= 1 a))
31+
(is (= 2 b))))
32+
(let [{:keys [:a/b :c/d]} {:a/b 1 :c/d 2}]
33+
(testing "keyword syntax"
34+
(is (= 1 b))
35+
(is (= 2 d))))
36+
(let [{:keys [a/b c/d]} {:a/b 1 :c/d 2}]
37+
(testing "symbol syntax"
38+
(is (= 1 b))
39+
(is (= 2 d))))
40+
(let [{:syms [a/b c/d]} {'a/b 1 'c/d 2}]
41+
(testing ":syms"
42+
(is (= 1 b))
43+
(is (= 2 d))))
44+
(let [{:keys [::s/x ::s/y]} {:clojure.string/x 1 :clojure.string/y 2}]
45+
(testing ":keys"
46+
(is (= x 1))
47+
(is (= y 2))))
48+
)))
49+
50+
(deftest keywords-in-destructuring
51+
(let [m {:a 1 :b 2}]
52+
(let [{:keys [:a :b]} m]
53+
(is (= [1 2] [a b])))
54+
(let [{:keys [:a :b :c] :or {c 3}} m]
55+
(is (= [1 2 3] [a b c])))))
56+
57+
(deftest namespaced-keywords-in-destructuring
58+
(let [m {:a/b 1 :c/d 2}]
59+
(let [{:keys [:a/b :c/d]} m]
60+
(is (= [1 2] [b d])))
61+
(let [{:keys [:a/b :c/d :e/f] :or {f 3}} m]
62+
(is (= [1 2 3] [b d f])))))
63+
64+
(deftest namespaced-keys-in-destructuring
65+
(let [m {:a/b 1 :c/d 2}]
66+
(let [{:keys [a/b c/d]} m]
67+
(is (= [1 2] [b d])))
68+
(let [{:keys [a/b c/d e/f] :or {f 3}} m]
69+
(is (= [1 2 3] [b d f])))))
70+
71+
(deftest namespaced-syms-in-destructuring
72+
(let [{:syms [a/b c/d e/f] :or {f 3}} {'a/b 1 'c/d 2}]
73+
(is (= [1 2 3] [b d f]))))
74+
75+
(deftest namespaced-keys-syntax
76+
(let [{:a/keys [b c d] :or {d 3}} {:a/b 1 :a/c 2}]
77+
(is (= [1 2 3] [b c d]))))
78+
79+
(deftest namespaced-syms-syntax
80+
(let [{:a/syms [b c d] :or {d 3}} {'a/b 1 'a/c 2}]
81+
(is (= [1 2 3] [b c d]))))
82+
83+
(deftest resolve-keyword-ns-alias-in-destructuring
84+
(let [{:keys [::s/x ::s/y ::s/z] :or {z 3}} {:clojure.string/x 1 :clojure.string/y 2}]
85+
(is (= [1 2 3] [x y z]))))

0 commit comments

Comments
 (0)