Add support for clojure.data.generators (#470)

This commit is contained in:
Jeroen van Dijk 2020-06-12 16:35:34 +02:00 committed by GitHub
parent d88c034686
commit 0754975172
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 61 additions and 0 deletions

View 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)))
"

View file

@ -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

View file

@ -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

View file

@ -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

View 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)))))