限制測試資料的大小
使用快速檢查來測試具有較差漸近複雜度的函式可能是困難的,因為隨機輸入通常不是大小有界的。通過在輸入的大小上新增上限,我們仍然可以測試這些昂貴的函式。
import Data.List(permutations)
import Test.QuickCheck
longRunningFunction :: [a] -> Int
longRunningFunction xs = length (permutations xs)
factorial::Integral a => a -> a
factorial n = product [1..n]
prop_numberOfPermutations xs =
longRunningFunction xs == factorial (length xs)
ghci> quickCheckWith (stdArgs { maxSize = 10}) prop_numberOfPermutations
通過將 quickCheckWith
與 stdArgs
的修改版本一起使用,我們可以將輸入的大小限制為最多 10.在這種情況下,當我們生成列表時,這意味著我們生成最大為 10 的列表。我們的排列函式不會這些短名單需要花費太長時間,但我們仍然可以合理地確信我們的定義是正確的。