Skip to content

Commit 13984e4

Browse files
authored
Merge pull request #1141 from frenchy64/issue-1121-seqable-nil-gen
Close #1121: don't generate nil if :seqable is non-empty
2 parents 7f5e26a + bae2e70 commit 13984e4

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

src/malli/generator.cljc

+6-2
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,13 @@
145145
(gen/one-of gs)))
146146

147147
(defn- -seqable-gen [schema options]
148-
(let [el (-> schema m/children first)]
148+
(let [{:keys [min]} (-min-max schema options)
149+
el (-> schema m/children first)]
149150
(gen-one-of
150-
(-> [nil-gen]
151+
(-> []
152+
(cond->
153+
(or (nil? min) (zero? min))
154+
(conj nil-gen))
151155
(into (map #(-coll-gen schema % options))
152156
[identity vec eduction #(into-array #?(:clj Object) %)])
153157
(conj (-coll-distinct-gen schema set options))

test/malli/generator_test.cljc

+6
Original file line numberDiff line numberDiff line change
@@ -1137,3 +1137,9 @@
11371137
[{} :map]]]
11381138
(is (every? #{{:type nil} {:type {}}} (mg/sample schema)))
11391139
(is (every? (m/validator schema) (mg/sample schema))))))
1140+
1141+
(deftest seqable-generates-non-empty-with-positive-min-test
1142+
(is (seq (mg/generate [:seqable {:min 4 :max 4} :int] {:seed 0})))
1143+
(doseq [_ (range 100)
1144+
v (mg/sample [:seqable {:min 1} :any])]
1145+
(is (seq v))))

0 commit comments

Comments
 (0)