如何使用“clojure.spec/+;”限制生成样本的大小?
如何使用“clojure.spec/+;”限制生成样本的大小?,clojure,clojure.spec,test.check,Clojure,Clojure.spec,Test.check,clojure.spec/coll of采用:gen max选项限制生成的样本大小。 有类似于clojure.spec/+的吗?s/*和s/+不要选择像:gen max这样的选项,但那些重复的正则表达式规范会这样做。我认为这是相当粗粒度的控制,对像这样的简单规范没有实际影响,它似乎总是为任何正的*递归限制*>生成~200个元素的最长序列: (binding [clojure.spec.alpha/*recursion-limit* 1] (->> (gen/sample (s/g
clojure.spec/coll of
采用:gen max
选项限制生成的样本大小。
有类似于clojure.spec/+的吗?
s/*
和s/+
不要选择像:gen max
这样的选项,但那些重复的正则表达式规范会这样做。我认为这是相当粗粒度的控制,对像这样的简单规范没有实际影响,它似乎总是为任何正的*递归限制*
>生成~200个元素的最长序列:
(binding [clojure.spec.alpha/*recursion-limit* 1]
(->> (gen/sample (s/gen (s/* int?)) 200)
(map count)
(apply max)))
限制生成序列长度的一种方法是提供自定义生成器:
(s/def ::ints
(s/with-gen
(s/+ int?)
#(gen/vector gen/int 1 10)))
(gen/sample (s/gen ::ints) 200)
这应始终生成1-10个整数的向量。相关主题: