如何使用`clojure.spec / +`限制生成的样本的大小?

时间:2017-06-09 11:54:57

标签: clojure clojure.spec test.check

clojure.spec/coll-of使用:gen-max选项来限制生成的样本大小。 是否有clojure.spec/+的模拟?

1 个答案:

答案 0 :(得分:0)

os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" os.environ['CUDA_VISIBLE_DEVICES']='0' ... device = torch.cuda.device(0) print torch.cuda.get_device_name(0) s/*不会采用s/+这样的选项,但是那些重复的正则表达式规范却是take clojure.spec.alpha/*recursion-limit* into account。我认为这是一个粗粒度的控件,并且对像这样的简单规范没有实际影响,对于任何肯定的:gen-max来说,它似乎总是产生最长〜200个元素的序列:

*recursion-limit*

限制生成序列长度的一种方法是提供自定义生成器:

(binding [clojure.spec.alpha/*recursion-limit* 1]
  (->> (gen/sample (s/gen (s/* int?)) 200)
       (map count)
       (apply max)))

这应该始终生成1到10个整数的向量。