FSCheck生成特定大小的列表

时间:2012-03-19 12:37:13

标签: f# fscheck

可能是一个愚蠢的问题,但如何为FSCheck生成特定大小的列表?

我可以限制使用:

let fn_of_2_check xs = (xs.Length=2) ==> fn_of_2 xs

但显然,这会丢掉大量的名单。

此处fn_of_2仅对长度为2的列表进行一些测试,并返回truefalse

2 个答案:

答案 0 :(得分:5)

怎么样:

let listOfLength n = Gen.listOfLength n Arb.generate |> Arb.fromGen
Check.Quick (Prop.forAll (listOfLength 2) fn_of_2)

答案 1 :(得分:2)

一个简单的解决方案是编写一个测试,它接受两个输入并从中构建一个双元素列表:

let fn_of_2_check x y = fn_of_2 [x; y]

但是,如果您只测试双元素列表的函数,那么函数可能应该使用两元素元组作为输入。或者,您可以编写一个测试来验证两个元素列表的某些行为以及其他长度列表的其他行为。

(但是如果你想特别检查两个元素列表的行为,那么上面的代码应该有效。)