Add support for clojure.data.generators (#470)
This commit is contained in:
parent
d88c034686
commit
0754975172
5 changed files with 61 additions and 0 deletions
21
script/lib_tests/clojure_data_generators_test
Executable file
21
script/lib_tests/clojure_data_generators_test
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
if [ "$BABASHKA_TEST_ENV" = "native" ]; then
|
||||
BB_CMD="./bb"
|
||||
else
|
||||
BB_CMD="lein bb"
|
||||
fi
|
||||
|
||||
export BABASHKA_CLASSPATH
|
||||
BABASHKA_CLASSPATH=$(clojure -Sdeps '{:deps {org.clojure/data.generators {:mvn/version "1.0.0"}}}' -Spath)
|
||||
|
||||
$BB_CMD -cp "$BABASHKA_CLASSPATH:test-resources/lib_tests" -e "
|
||||
(require '[clojure.data.generators-test])
|
||||
(require '[clojure.test :as t])
|
||||
(let [{:keys [:test :pass :fail :error]} (t/run-tests 'clojure.data.generators-test)]
|
||||
(when-not (pos? test)
|
||||
(System/exit 1))
|
||||
(System/exit (+ fail error)))
|
||||
"
|
||||
|
|
@ -26,3 +26,4 @@ script/lib_tests/clojure_data_zip_test
|
|||
script/lib_tests/cljc_java_time_test
|
||||
script/lib_tests/camel_snake_kebab_test
|
||||
script/lib_tests/aero_test
|
||||
script/lib_tests/clojure_data_generators_test
|
||||
|
|
|
|||
|
|
@ -121,6 +121,7 @@
|
|||
java.lang.ProcessBuilder$Redirect
|
||||
java.lang.Runtime
|
||||
java.lang.RuntimeException
|
||||
java.lang.Short
|
||||
java.lang.String
|
||||
java.lang.StringBuilder
|
||||
java.lang.System
|
||||
|
|
@ -194,6 +195,7 @@
|
|||
java.util.jar.JarFile
|
||||
java.util.jar.JarEntry
|
||||
java.util.jar.JarFile$JarFileEntry
|
||||
java.util.Random
|
||||
java.util.regex.Pattern
|
||||
java.util.Base64
|
||||
java.util.Base64$Decoder
|
||||
|
|
|
|||
|
|
@ -400,6 +400,7 @@ If neither -e, -f, or --socket-repl are specified, then the first argument that
|
|||
'{ArithmeticException java.lang.ArithmeticException
|
||||
AssertionError java.lang.AssertionError
|
||||
BigDecimal java.math.BigDecimal
|
||||
BigInteger java.math.BigInteger
|
||||
Boolean java.lang.Boolean
|
||||
Byte java.lang.Byte
|
||||
Character java.lang.Character
|
||||
|
|
@ -421,6 +422,7 @@ If neither -e, -f, or --socket-repl are specified, then the first argument that
|
|||
RuntimeException java.lang.RuntimeException
|
||||
Process java.lang.Process
|
||||
ProcessBuilder java.lang.ProcessBuilder
|
||||
Short java.lang.Short
|
||||
String java.lang.String
|
||||
StringBuilder java.lang.StringBuilder
|
||||
System java.lang.System
|
||||
|
|
|
|||
35
test-resources/lib_tests/clojure/data/generators_test.clj
Normal file
35
test-resources/lib_tests/clojure/data/generators_test.clj
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
(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)))))
|
||||
Loading…
Reference in a new issue