modified namespace of tests so that its clojurescript compatible, removed unncessary helpers

This commit is contained in:
Nathan Marz 2015-06-30 17:26:19 -04:00
parent b85f761ff9
commit c20e4b3fd6
2 changed files with 87 additions and 89 deletions

View file

@ -1,12 +1,16 @@
(ns com.rpl.specter.core-test (ns com.rpl.specter.core-test
(:use [clojure.test] #?(:cljs (:require-macros
[clojure.test.check.clojure-test] [cljs.test :refer (is deftest)]
[com.rpl specter] [cljs.test.check.cljs-test :refer (defspec)]))
[com.rpl.specter protocols] (:use
[com.rpl.specter test-helpers]) #?(:clj [clojure.test :only [deftest is]])
#?(:clj [clojure.test.check.clojure-test :only [defspec]])
[com.rpl.specter.protocols :only [comp-paths*]]
[com.rpl.specter.test-helpers :only [limit-size for-all+]])
(:require [clojure.test.check (:require [clojure.test.check
[generators :as gen] [generators :as gen]
[properties :as prop]] [properties :as prop #?@(:cljs [:include-macros true])]]
[com.rpl [specter :as s]]
[clojure.test.check :as qc])) [clojure.test.check :as qc]))
;;TODO: ;;TODO:
@ -28,7 +32,7 @@
v (gen/vector (limit-size 5 v (gen/vector (limit-size 5
(gen-map-with-keys gen/keyword gen/int kw))) (gen-map-with-keys gen/keyword gen/int kw)))
pred (gen/elements [odd? even?])] pred (gen/elements [odd? even?])]
(= (select [ALL kw pred] v) (= (s/select [s/ALL kw pred] v)
(->> v (map kw) (filter pred)) (->> v (map kw) (filter pred))
))) )))
@ -36,46 +40,46 @@
(for-all+ (for-all+
[v (gen/vector gen/int) [v (gen/vector gen/int)
pred (gen/elements [odd? even?]) pred (gen/elements [odd? even?])
pos (gen/elements [[FIRST first] [LAST last]])] pos (gen/elements [[s/FIRST first] [s/LAST last]])]
(= (select-one [(filterer pred) (first pos)] v) (= (s/select-one [(s/filterer pred) (first pos)] v)
(->> v (filter pred) ((last pos))) (->> v (filter pred) ((last pos)))
))) )))
(defspec select-all-on-map (defspec select-all-on-map
(for-all+ (for-all+
[m (limit-size 5 (gen/map gen/keyword gen/int))] [m (limit-size 5 (gen/map gen/keyword gen/int))]
(= (select [ALL LAST] m) (= (s/select [s/ALL s/LAST] m)
(for [[k v] m] v)) (for [[k v] m] v))
)) ))
(deftest select-one-test (deftest select-one-test
(is (thrown? Exception (select-one [ALL even?] [1 2 3 4]))) (is (thrown? Exception (s/select-one [s/ALL even?] [1 2 3 4])))
(is (= 1 (select-one [ALL odd?] [2 4 1 6]))) (is (= 1 (s/select-one [s/ALL odd?] [2 4 1 6])))
) )
(deftest select-first-test (deftest select-first-test
(is (= 7 (select-first [(filterer odd?) ALL #(> % 4)] [3 4 2 3 7 5 9 8]))) (is (= 7 (s/select-first [(s/filterer odd?) s/ALL #(> % 4)] [3 4 2 3 7 5 9 8])))
(is (nil? (select-first [ALL even?] [1 3 5 9]))) (is (nil? (s/select-first [s/ALL even?] [1 3 5 9])))
) )
(defspec transform-all-on-map (defspec transform-all-on-map
(for-all+ (for-all+
[m (limit-size 5 (gen/map gen/keyword gen/int))] [m (limit-size 5 (gen/map gen/keyword gen/int))]
(= (transform [ALL LAST] inc m) (= (s/transform [s/ALL s/LAST] inc m)
(into {} (for [[k v] m] [k (inc v)])) (into {} (for [[k v] m] [k (inc v)]))
))) )))
(defspec transform-all (defspec transform-all
(for-all+ (for-all+
[v (gen/vector gen/int)] [v (gen/vector gen/int)]
(let [v2 (transform [ALL] inc v)] (let [v2 (s/transform [s/ALL] inc v)]
(and (vector? v2) (= v2 (map inc v))) (and (vector? v2) (= v2 (map inc v)))
))) )))
(defspec transform-all-list (defspec transform-all-list
(for-all+ (for-all+
[v (gen/list gen/int)] [v (gen/list gen/int)]
(let [v2 (transform [ALL] inc v)] (let [v2 (s/transform [s/ALL] inc v)]
(and (seq? v2) (= v2 (map inc v))) (and (seq? v2) (= v2 (map inc v)))
))) )))
@ -84,7 +88,7 @@
[v (gen/vector gen/int) [v (gen/vector gen/int)
pred (gen/elements [odd? even?]) pred (gen/elements [odd? even?])
action (gen/elements [inc dec])] action (gen/elements [inc dec])]
(let [v2 (transform [ALL pred] action v)] (let [v2 (s/transform [s/ALL pred] action v)]
(= v2 (map (fn [v] (if (pred v) (action v) v)) v)) (= v2 (map (fn [v] (if (pred v) (action v) v)) v))
))) )))
@ -92,7 +96,7 @@
(for-all+ (for-all+
[v (gen/not-empty (gen/vector gen/int)) [v (gen/not-empty (gen/vector gen/int))
pred (gen/elements [inc dec])] pred (gen/elements [inc dec])]
(let [v2 (transform [LAST] pred v)] (let [v2 (s/transform [s/LAST] pred v)]
(= v2 (concat (butlast v) [(pred (last v))])) (= v2 (concat (butlast v) [(pred (last v))]))
))) )))
@ -100,7 +104,7 @@
(for-all+ (for-all+
[v (gen/not-empty (gen/vector gen/int)) [v (gen/not-empty (gen/vector gen/int))
pred (gen/elements [inc dec])] pred (gen/elements [inc dec])]
(let [v2 (transform [FIRST] pred v)] (let [v2 (s/transform [s/FIRST] pred v)]
(= v2 (concat [(pred (first v))] (rest v) )) (= v2 (concat [(pred (first v))] (rest v) ))
))) )))
@ -109,8 +113,8 @@
[v (gen/vector gen/int) [v (gen/vector gen/int)
pred (gen/elements [even? odd?]) pred (gen/elements [even? odd?])
updater (gen/elements [inc dec])] updater (gen/elements [inc dec])]
(let [v2 (transform [(filterer pred) ALL] updater v) (let [v2 (s/transform [(s/filterer pred) s/ALL] updater v)
v3 (transform [ALL pred] updater v)] v3 (s/transform [s/ALL pred] updater v)]
(= v2 v3)) (= v2 v3))
)) ))
@ -120,7 +124,7 @@
kw2 gen/keyword kw2 gen/keyword
m (limit-size 10 (gen-map-with-keys gen/keyword gen/int kw1 kw2)) m (limit-size 10 (gen-map-with-keys gen/keyword gen/int kw1 kw2))
pred (gen/elements [odd? even?])] pred (gen/elements [odd? even?])]
(= (transform [(collect-one kw2) kw1 pred] + m) (= (s/transform [(s/collect-one kw2) kw1 pred] + m)
(if (pred (kw1 m)) (if (pred (kw1 m))
(assoc m kw1 (+ (kw1 m) (kw2 m))) (assoc m kw1 (+ (kw1 m) (kw2 m)))
m m
@ -137,7 +141,7 @@
(for-all+ (for-all+
[pred (gen/elements [odd? even?]) [pred (gen/elements [odd? even?])
v (gen/such-that #(some pred %) (gen/vector gen/int))] v (gen/such-that #(some pred %) (gen/vector gen/int))]
(let [v2 (transform [(filterer pred) LAST] inc v) (let [v2 (s/transform [(s/filterer pred) s/LAST] inc v)
differing-elems (differing-elements v v2)] differing-elems (differing-elements v v2)]
(and (= (count v2) (count v)) (and (= (count v2) (count v))
(= (count differing-elems) 1) (= (count differing-elems) 1)
@ -155,7 +159,7 @@
(gen-map-with-keys gen/keyword gen/int k2) (gen-map-with-keys gen/keyword gen/int k2)
k1)) k1))
pred (gen/elements [inc dec])] pred (gen/elements [inc dec])]
(let [m2 (transform [k1 k2] pred m1)] (let [m2 (s/transform [k1 k2] pred m1)]
(= (assoc-in m1 [k1 k2] nil) (assoc-in m2 [k1 k2] nil)) (= (assoc-in m1 [k1 k2] nil) (assoc-in m2 [k1 k2] nil))
(= (pred (get-in m1 [k1 k2])) (get-in m2 [k1 k2])) (= (pred (get-in m1 [k1 k2])) (get-in m2 [k1 k2]))
))) )))
@ -169,7 +173,7 @@
(map (fn [v] [v v])) (map (fn [v] [v v]))
(apply concat)) (apply concat))
user-ret (if (empty? user-ret) nil user-ret)] user-ret (if (empty? user-ret) nil user-ret)]
(= (replace-in [ALL even?] (fn [v] [(inc v) [v v]]) v) (= (s/replace-in [s/ALL even?] (fn [v] [(inc v) [v v]]) v)
[res user-ret] [res user-ret]
)))) ))))
@ -179,7 +183,7 @@
(let [res (->> v (map (fn [v] (if (even? v) (inc v) v)))) (let [res (->> v (map (fn [v] (if (even? v) (inc v) v))))
last-even (->> v (filter even?) last) last-even (->> v (filter even?) last)
user-ret (if last-even {:a last-even})] user-ret (if last-even {:a last-even})]
(= (replace-in [ALL even?] (fn [v] [(inc v) v]) v :merge-fn (fn [curr new] (= (s/replace-in [s/ALL even?] (fn [v] [(inc v) v]) v :merge-fn (fn [curr new]
(assoc curr :a new))) (assoc curr :a new)))
[res user-ret] [res user-ret]
)))) ))))
@ -188,8 +192,8 @@
(for-all+ (for-all+
[v (gen/vector gen/int) [v (gen/vector gen/int)
v2 (gen/vector gen/int)] v2 (gen/vector gen/int)]
(let [b (setval BEGINNING v2 v) (let [b (s/setval s/BEGINNING v2 v)
e (setval END v2 v)] e (s/setval s/END v2 v)]
(and (= b (concat v2 v)) (and (= b (concat v2 v))
(= e (concat v v2))) (= e (concat v v2)))
))) )))
@ -204,29 +208,29 @@
predcount (fn [pred v] (->> v (filter pred) count)) predcount (fn [pred v] (->> v (filter pred) count))
even-count (partial predcount even?) even-count (partial predcount even?)
odd-count (partial predcount odd?) odd-count (partial predcount odd?)
b (transform (srange b e) (fn [r] (filter odd? r)) v)] b (s/transform (s/srange b e) (fn [r] (filter odd? r)) v)]
(and (= (odd-count v) (odd-count b)) (and (= (odd-count v) (odd-count b))
(= (+ (even-count b) (even-count sv)) (= (+ (even-count b) (even-count sv))
(even-count v))) (even-count v)))
))) )))
(deftest structure-path-directly-test (deftest structure-path-directly-test
(is (= 3 (select-one :b {:a 1 :b 3}))) (is (= 3 (s/select-one :b {:a 1 :b 3})))
(is (= 5 (select-one (comp-paths :a :b) {:a {:b 5}}))) (is (= 5 (s/select-one (s/comp-paths :a :b) {:a {:b 5}})))
) )
(defspec view-test (defspec view-test
(for-all+ (for-all+
[i gen/int [i gen/int
afn (gen/elements [inc dec])] afn (gen/elements [inc dec])]
(= (first (select (view afn) i)) (= (first (s/select (s/view afn) i))
(afn i) (afn i)
(transform (view afn) identity i) (s/transform (s/view afn) identity i)
))) )))
(deftest selected?-test (deftest selected?-test
(is (= [[1 3 5] [2 :a] [7 11 4 2 :a] [10 1 :a] []] (is (= [[1 3 5] [2 :a] [7 11 4 2 :a] [10 1 :a] []]
(setval [ALL (selected? ALL even?) END] (s/setval [s/ALL (s/selected? s/ALL even?) s/END]
[:a] [:a]
[[1 3 5] [2] [7 11 4 2] [10 1] []] [[1 3 5] [2] [7 11 4 2] [10 1] []]
)))) ))))
@ -235,19 +239,19 @@
(for-all+ (for-all+
[i gen/int [i gen/int
afn (gen/elements [inc dec])] afn (gen/elements [inc dec])]
(and (= [i] (select nil i)) (and (= [i] (s/select nil i))
(= (afn i) (transform nil afn i))))) (= (afn i) (s/transform nil afn i)))))
(deftest nil-comp-test (deftest nil-comp-test
(is (= [5] (select (comp-paths* nil) 5)))) (is (= [5] (s/select (comp-paths* nil) 5))))
(defspec putval-test (defspec putval-test
(for-all+ (for-all+
[kw gen/keyword [kw gen/keyword
m (limit-size 10 (gen-map-with-keys gen/keyword gen/int kw)) m (limit-size 10 (gen-map-with-keys gen/keyword gen/int kw))
c gen/int] c gen/int]
(= (transform [(putval c) kw] + m) (= (s/transform [(s/putval c) kw] + m)
(transform [kw (putval c)] + m) (s/transform [kw (s/putval c)] + m)
(assoc m kw (+ c (get m kw))) (assoc m kw (+ c (get m kw)))
))) )))
@ -255,11 +259,11 @@
(for-all+ (for-all+
[v (gen/vector gen/int)] [v (gen/vector gen/int)]
(= [v] (= [v]
(select [] v) (s/select [] v)
(select nil v) (s/select nil v)
(select (comp-paths) v) (s/select (s/comp-paths) v)
(select (comp-paths nil) v) (s/select (s/comp-paths nil) v)
(select [nil nil nil] v) (s/select [nil nil nil] v)
))) )))
(defspec empty-selector-transform-test (defspec empty-selector-transform-test
@ -267,22 +271,22 @@
[kw gen/keyword [kw gen/keyword
m (limit-size 10 (gen-map-with-keys gen/keyword gen/int kw))] m (limit-size 10 (gen-map-with-keys gen/keyword gen/int kw))]
(and (= m (and (= m
(transform nil identity m) (s/transform nil identity m)
(transform [] identity m) (s/transform [] identity m)
(transform (comp-paths []) identity m) (s/transform (s/comp-paths []) identity m)
(transform (comp-paths nil nil) identity m) (s/transform (s/comp-paths nil nil) identity m)
) )
(= (transform kw inc m) (= (s/transform kw inc m)
(transform [nil kw] inc m) (s/transform [nil kw] inc m)
(transform (comp-paths kw nil) inc m) (s/transform (s/comp-paths kw nil) inc m)
(transform (comp-paths nil kw nil) inc m) (s/transform (s/comp-paths nil kw nil) inc m)
)))) ))))
(deftest compose-empty-comp-path-test (deftest compose-empty-comp-path-test
(let [m {:a 1}] (let [m {:a 1}]
(is (= [1] (is (= [1]
(select [:a (comp-paths)] m) (s/select [:a (s/comp-paths)] m)
(select [(comp-paths) :a] m) (s/select [(s/comp-paths) :a] m)
)))) ))))
(defspec mixed-selector-test (defspec mixed-selector-test
@ -295,29 +299,29 @@
(gen-map-with-keys gen/keyword gen/int k2) (gen-map-with-keys gen/keyword gen/int k2)
k1))] k1))]
(= [(-> m k1 k2)] (= [(-> m k1 k2)]
(select [k1 (comp-paths k2)] m) (s/select [k1 (s/comp-paths k2)] m)
(select [(comp-paths k1) k2] m) (s/select [(s/comp-paths k1) k2] m)
(select [(comp-paths k1 k2) nil] m) (s/select [(s/comp-paths k1 k2) nil] m)
(select [(comp-paths) k1 k2] m) (s/select [(s/comp-paths) k1 k2] m)
(select [k1 (comp-paths) k2] m) (s/select [k1 (s/comp-paths) k2] m)
))) )))
(deftest cond-path-test (deftest cond-path-test
(is (= [4 2 6 8 10] (is (= [4 2 6 8 10]
(select [ALL (cond-path even? [(view inc) (view inc)] (s/select [s/ALL (s/cond-path even? [(s/view inc) (s/view inc)]
#(= 3 %) (view dec))] #(= 3 %) (s/view dec))]
[1 2 3 4 5 6 7 8]))) [1 2 3 4 5 6 7 8])))
(is (empty? (select (if-path odd? (view inc)) 2))) (is (empty? (s/select (s/if-path odd? (s/view inc)) 2)))
(is (= [6 2 10 6 14] (is (= [6 2 10 6 14]
(transform [(putval 2) (s/transform [(s/putval 2)
ALL s/ALL
(if-path odd? [(view inc) (view inc)] (view dec))] (s/if-path odd? [(s/view inc) (s/view inc)] (s/view dec))]
* *
[1 2 3 4 5] [1 2 3 4 5]
))) )))
(is (= 2 (is (= 2
(transform [(putval 2) (s/transform [(s/putval 2)
(if-path odd? (view inc))] (s/if-path odd? (s/view inc))]
* *
2))) 2)))
) )
@ -339,10 +343,10 @@
(let [v1 (get m k1) (let [v1 (get m k1)
k (if (pred v1) k2 k3)] k (if (pred v1) k2 k3)]
(and (and
(= (transform (if-path [k1 pred] k2 k3) inc m) (= (s/transform (s/if-path [k1 pred] k2 k3) inc m)
(transform k inc m)) (s/transform k inc m))
(= (select (if-path [k1 pred] k2 k3) m) (= (s/select (s/if-path [k1 pred] k2 k3) m)
(select k m)) (s/select k m))
)))) ))))
(defspec multi-path-test (defspec multi-path-test
@ -356,17 +360,17 @@
k1 k1
k2)) k2))
] ]
(= (transform (multi-path k1 k2) inc m) (= (s/transform (s/multi-path k1 k2) inc m)
(->> m (->> m
(transform k1 inc) (s/transform k1 inc)
(transform k2 inc))) (s/transform k2 inc)))
)) ))
(deftest empty-pos-transform (deftest empty-pos-transform
(is (empty? (select FIRST []))) (is (empty? (s/select s/FIRST [])))
(is (empty? (select LAST []))) (is (empty? (s/select s/LAST [])))
(is (= [] (transform FIRST inc []))) (is (= [] (s/transform s/FIRST inc [])))
(is (= [] (transform LAST inc []))) (is (= [] (s/transform s/LAST inc [])))
) )
(defspec set-filter-test (defspec set-filter-test
@ -375,10 +379,10 @@
k2 (gen/such-that #(not= k1 %) gen/keyword) k2 (gen/such-that #(not= k1 %) gen/keyword)
k3 (gen/such-that (complement #{k1 k2}) gen/keyword) k3 (gen/such-that (complement #{k1 k2}) gen/keyword)
v (gen/vector (gen/elements [k1 k2 k3]))] v (gen/vector (gen/elements [k1 k2 k3]))]
(= (filter #{k1 k2} v) (select [ALL #{k1 k2}] v)) (= (filter #{k1 k2} v) (s/select [s/ALL #{k1 k2}] v))
)) ))
(deftest nil-select-one-test (deftest nil-select-one-test
(is (= nil (select-one! ALL [nil]))) (is (= nil (s/select-one! s/ALL [nil])))
(is (thrown? Exception (select-one! ALL []))) (is (thrown? Exception (s/select-one! s/ALL [])))
) )

View file

@ -25,9 +25,3 @@
(fn [rnd _size] (fn [rnd _size]
(gen rnd (if (< _size n) _size n))))) (gen rnd (if (< _size n) _size n)))))
(defn gen-tuple+ [& inputs]
(->> inputs
(map #(if (gen/generator? %) % (gen/return %)))
(apply gen/tuple)
))