Skip to content

Commit

Permalink
Merge pull request #748 from frenchy64/frenchy64-better-distribution
Browse files Browse the repository at this point in the history
Improve generator distribution for sized schemas
  • Loading branch information
ikitommi committed Aug 30, 2022
2 parents 726a313 + 83f7999 commit 457fc5d
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 4 deletions.
4 changes: 2 additions & 2 deletions src/malli/generator.cljc
Expand Up @@ -93,7 +93,7 @@
(cond
(and min (= min max)) (gen/fmap str/join (gen/vector gen/char min))
(and min max) (gen/fmap str/join (gen/vector gen/char min max))
min (gen/fmap str/join (gen/sized (fn [size] (gen/vector gen/char min (clojure.core/max size min)))))
min (gen/fmap str/join (gen/sized #(gen/vector gen/char min (+ min %))))
max (gen/fmap str/join (gen/vector gen/char 0 max))
:else gen/string-alphanumeric)))

Expand All @@ -108,7 +108,7 @@
(gen/fmap f (cond
(and min (= min max)) (gen/vector gen min)
(and min max) (gen/vector gen min max)
min (gen/sized (fn [size] (gen/vector gen min (clojure.core/max size min))))
min (gen/sized #(gen/vector gen min (+ min %)))
max (gen/vector gen 0 max)
:else (gen/vector gen))))))

Expand Down
4 changes: 2 additions & 2 deletions test/malli/generator_test.cljc
Expand Up @@ -816,12 +816,12 @@
(gen/return []))
{:seed 0}))))
(testing "no empty vectors allowed"
(is (= '(nil nil [nil nil] [nil] nil [nil nil] nil [nil nil] nil [[nil nil]])
(is (= [nil nil [nil nil nil] [nil] nil [nil nil] nil [nil nil nil] nil [[nil nil nil]]]
(mg/sample [:schema {:registry {::rec [:maybe [:vector {:min 1} [:ref ::rec]]]}} [:ref ::rec]]
{:seed 0})
(mg/sample (gen/recursive-gen
(fn [rec]
(gen/one-of [(gen/return nil)
(gen/sized #(gen/vector rec 1 %))]))
(gen/sized #(gen/vector rec 1 (+ 1 %)))]))
(gen/one-of [(gen/return nil)]))
{:seed 0})))))

0 comments on commit 457fc5d

Please sign in to comment.