2012-03-19 60 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)