babashka/test-resources/lib_tests/clojure/data/generators_test.clj

36 lines
1.1 KiB
Clojure
Raw Normal View History

(ns clojure.data.generators-test
(:require [clojure.data.generators :as gen]
[clojure.test :refer (deftest is)]))
(defn print-read-roundtrip
[o]
(binding [*print-length* nil
*print-level* nil]
(-> o pr-str read-string)))
(defn check-print-read-roundtrip
[o]
(let [o2 (print-read-roundtrip o)]
(when-not (= o o2)
(throw (ex-info "Value cannot roundtrip, see ex-data" {:value o :roundtrip o2})))))
(deftest test-print-read-roundtrip
(dotimes [_ 50]
(check-print-read-roundtrip (gen/anything))))
(deftest test-shuffle
(dotimes [_ 50]
(let [coll (gen/vec gen/anything)
shuf (gen/shuffle coll)]
(is (= (into #{} coll)
(into #{} shuf))))))
(deftest test-reservoir-sample-consistency
(dotimes [n 50]
(let [coll (range 100)
sample-1 (binding [gen/*rnd* (java.util.Random. n)]
(gen/reservoir-sample 10 coll))
sample-2 (binding [gen/*rnd* (java.util.Random. n)]
(gen/reservoir-sample 10 coll))]
(is (= sample-1 sample-2)))))