Created
August 19, 2014 00:10
-
-
Save jamii/25be7c5efa91f0e81e00 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; fast gens with no shrinking and no long strings. good enough for government work | |
(defn make-simple-key-elem [rnd size] | |
(let [value (gen/rand-range rnd (- size) size)] | |
(if (pprng/boolean rnd) | |
value | |
(str value)))) | |
(defn make-simple-key [rnd size key-len] | |
(let [result #js []] | |
(dotimes [_ key-len] | |
(.push result (make-simple-key-elem rnd size))) | |
result)) | |
(defn make-simple-delta [rnd size] | |
(let [delta (gen/rand-range rnd (- size) size)] | |
(if (== delta 0) | |
(+ delta 1) | |
delta))) | |
(defn gen-update [key-len] | |
(gen/make-gen | |
(fn [rnd size] | |
(let [key (make-simple-key rnd size key-len) | |
delta (make-simple-delta rnd size)] | |
[[:update key delta] nil])))) | |
(defn run-self-join-prop [min-keys key-len updates] | |
(let [[tree _] (apply-to-tree (tree min-keys key-len) updates) | |
solver (solver | |
key-len | |
#js [(contains (iterator tree) (into-array (range key-len))) | |
(contains (iterator tree) (into-array (range key-len)))]) | |
tree-elems (.elems tree)] | |
(dotimes [i (alength tree-elems)] | |
(let [elem (aget tree-elems i)] | |
(when (number? elem) | |
(aset tree-elems i (* elem elem))))) | |
(prim= tree-elems (.elems solver)))) | |
(defn self-join-prop [key-len] | |
(prop/for-all [min-keys gen/s-pos-int | |
updates (gen/vector (gen-update key-len))] | |
(run-self-join-prop min-keys key-len updates))) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment