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/cljc_java_time_test
|
||||||
script/lib_tests/camel_snake_kebab_test
|
script/lib_tests/camel_snake_kebab_test
|
||||||
script/lib_tests/aero_test
|
script/lib_tests/aero_test
|
||||||
|
script/lib_tests/clojure_data_generators_test
|
||||||
|
|
|
||||||
|
|
@ -121,6 +121,7 @@
|
||||||
java.lang.ProcessBuilder$Redirect
|
java.lang.ProcessBuilder$Redirect
|
||||||
java.lang.Runtime
|
java.lang.Runtime
|
||||||
java.lang.RuntimeException
|
java.lang.RuntimeException
|
||||||
|
java.lang.Short
|
||||||
java.lang.String
|
java.lang.String
|
||||||
java.lang.StringBuilder
|
java.lang.StringBuilder
|
||||||
java.lang.System
|
java.lang.System
|
||||||
|
|
@ -194,6 +195,7 @@
|
||||||
java.util.jar.JarFile
|
java.util.jar.JarFile
|
||||||
java.util.jar.JarEntry
|
java.util.jar.JarEntry
|
||||||
java.util.jar.JarFile$JarFileEntry
|
java.util.jar.JarFile$JarFileEntry
|
||||||
|
java.util.Random
|
||||||
java.util.regex.Pattern
|
java.util.regex.Pattern
|
||||||
java.util.Base64
|
java.util.Base64
|
||||||
java.util.Base64$Decoder
|
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
|
'{ArithmeticException java.lang.ArithmeticException
|
||||||
AssertionError java.lang.AssertionError
|
AssertionError java.lang.AssertionError
|
||||||
BigDecimal java.math.BigDecimal
|
BigDecimal java.math.BigDecimal
|
||||||
|
BigInteger java.math.BigInteger
|
||||||
Boolean java.lang.Boolean
|
Boolean java.lang.Boolean
|
||||||
Byte java.lang.Byte
|
Byte java.lang.Byte
|
||||||
Character java.lang.Character
|
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
|
RuntimeException java.lang.RuntimeException
|
||||||
Process java.lang.Process
|
Process java.lang.Process
|
||||||
ProcessBuilder java.lang.ProcessBuilder
|
ProcessBuilder java.lang.ProcessBuilder
|
||||||
|
Short java.lang.Short
|
||||||
String java.lang.String
|
String java.lang.String
|
||||||
StringBuilder java.lang.StringBuilder
|
StringBuilder java.lang.StringBuilder
|
||||||
System java.lang.System
|
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