Skip to content

Instantly share code, notes, and snippets.

@kernelp4nic
Created August 3, 2017 20:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kernelp4nic/2f5a84ecc122fae289353aab2471d9d6 to your computer and use it in GitHub Desktop.
Save kernelp4nic/2f5a84ecc122fae289353aab2471d9d6 to your computer and use it in GitHub Desktop.
clojure.spec on Clojure 1.8
;;[clojure-future-spec "1.9.0-alpha17"]
;;[org.clojure/test.check "0.9.0"]
(require '[clojure.spec.alpha :as s])
(require '[clojure.future :refer :all])
(require '[clojure.spec.test.alpha :as stest])
(defn ranged-rand
"Returns random int in range start <= rand < end"
[start end]
(+ start (long (rand (- end start)))))
(defn ranged-rand ;; BROKEN!
"Returns random int in range start <= rand < end"
[start end]
(+ start (long (rand (- start end)))))
(s/fdef ranged-rand
:args (s/and (s/cat :start int? :end int?)
#(< (:start %) (:end %)))
:ret int?
:fn (s/and #(>= (:ret %) (-> % :args :start))
#(< (:ret %) (-> % :args :end))))
(ranged-rand 8 5)
(ranged-rand "asd" 2)
(stest/instrument `ranged-rand)
(s/explain 'ranged-rand)
(stest/check `ranged-rand)
(stest/abbrev-result (first (stest/check `ranged-rand)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment