2012-03-19 51 views
2

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

我可以限制使用:

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

但是,很明显,这将扔掉名单的负荷。

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

回答

2

一个平凡的解决办法是写一个测试,有两个输入端,并建立从他们两个元素的列表:

let fn_of_2_check x y = fn_of_2 [x; y] 

不过,如果你正在测试的功能有两个元素只列出,那么可能该函数应该将一个二元元组作为输入。或者,您可以编写一个测试来验证双元素列表的某些行为以及其他长度列表的其他行为。

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

+0

功能将列出的不同长度(数字的参数),但是它对于每个函数都是固定的。我想这就像map,map2,map3 - 我可以写fn_of_2_check fn_of_3_check等。 – b1g3ar5 2012-03-19 14:22:43

5

如何:

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