diff --git a/project.clj b/project.clj index 96fc4de..e80d1f9 100644 --- a/project.clj +++ b/project.clj @@ -8,7 +8,7 @@ :source-paths ["src"] :test-paths ["test"] :profiles {:dev {:dependencies - [[org.clojure/test.check "0.5.9"]]} + [[org.clojure/test.check "0.7.0"]]} } :cljsbuild { :builds [{ diff --git a/test/com/rpl/specter/core_test.clj b/test/com/rpl/specter/core_test.clj index ca07fbf..5c6dc84 100644 --- a/test/com/rpl/specter/core_test.clj +++ b/test/com/rpl/specter/core_test.clj @@ -25,7 +25,7 @@ (defspec select-all-keyword-filter (for-all+ [kw gen/keyword - v (gen/vector (max-size 5 + v (gen/vector (limit-size 5 (gen-map-with-keys gen/keyword gen/int kw))) pred (gen/elements [odd? even?])] (= (select [ALL kw pred] v) @@ -43,7 +43,7 @@ (defspec select-all-on-map (for-all+ - [m (max-size 5 (gen/map gen/keyword gen/int))] + [m (limit-size 5 (gen/map gen/keyword gen/int))] (= (select [ALL LAST] m) (for [[k v] m] v)) )) @@ -60,7 +60,7 @@ (defspec transform-all-on-map (for-all+ - [m (max-size 5 (gen/map gen/keyword gen/int))] + [m (limit-size 5 (gen/map gen/keyword gen/int))] (= (transform [ALL LAST] inc m) (into {} (for [[k v] m] [k (inc v)])) ))) @@ -118,7 +118,7 @@ (for-all+ [kw1 gen/keyword kw2 gen/keyword - m (max-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?])] (= (transform [(collect-one kw2) kw1 pred] + m) (if (pred (kw1 m)) @@ -147,9 +147,9 @@ ;; max sizes prevent too much data from being generated and keeps test from taking forever (defspec transform-keyword (for-all+ - [k1 (max-size 3 gen/keyword) - k2 (max-size 3 gen/keyword) - m1 (max-size 5 + [k1 (limit-size 3 gen/keyword) + k2 (limit-size 3 gen/keyword) + m1 (limit-size 5 (gen-map-with-keys gen/keyword (gen-map-with-keys gen/keyword gen/int k2) @@ -244,7 +244,7 @@ (defspec putval-test (for-all+ [kw gen/keyword - m (max-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] (= (transform [(putval c) kw] + m) (transform [kw (putval c)] + m) @@ -265,7 +265,7 @@ (defspec empty-selector-transform-test (for-all+ [kw gen/keyword - m (max-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 (transform nil identity m) (transform [] identity m) @@ -287,9 +287,9 @@ (defspec mixed-selector-test (for-all+ - [k1 (max-size 3 gen/keyword) - k2 (max-size 3 gen/keyword) - m (max-size 5 + [k1 (limit-size 3 gen/keyword) + k2 (limit-size 3 gen/keyword) + m (limit-size 5 (gen-map-with-keys gen/keyword (gen-map-with-keys gen/keyword gen/int k2) @@ -324,10 +324,10 @@ (defspec cond-path-selector-test (for-all+ - [k1 (max-size 3 gen/keyword) - k2 (max-size 3 gen/keyword) - k3 (max-size 3 gen/keyword) - m (max-size 5 + [k1 (limit-size 3 gen/keyword) + k2 (limit-size 3 gen/keyword) + k3 (limit-size 3 gen/keyword) + m (limit-size 5 (gen-map-with-keys gen/keyword gen/int @@ -347,9 +347,9 @@ (defspec multi-path-test (for-all+ - [k1 (max-size 3 gen/keyword) - k2 (max-size 3 gen/keyword) - m (max-size 5 + [k1 (limit-size 3 gen/keyword) + k2 (limit-size 3 gen/keyword) + m (limit-size 5 (gen-map-with-keys gen/keyword gen/int diff --git a/test/com/rpl/specter/test_helpers.clj b/test/com/rpl/specter/test_helpers.clj index 2ee4ca7..e8f20ed 100644 --- a/test/com/rpl/specter/test_helpers.clj +++ b/test/com/rpl/specter/test_helpers.clj @@ -7,6 +7,7 @@ [clojure.test.check :as qc] [clojure.pprint :as pp])) + ;; it seems like gen/bind and gen/return are a monad (hence the names) (defmacro for-all+ [bindings & body] (let [parts (partition 2 bindings) @@ -19,8 +20,8 @@ `(prop/for-all [~vars ~genned] ~@body ))) -(defn max-size [n {gen :gen}] - (gen/make-gen +(defn limit-size [n {gen :gen}] + (gen/->Generator (fn [rnd _size] (gen rnd (if (< _size n) _size n)))))