Joe*_*Dyk 1 haskell quickcheck
我开始通过解决99个Haskell问题来学习Haskell. http://www.haskell.org/haskellwiki/H-99:_Ninety-Nine_Haskell_Problems 我想使用quickcheck为每个程序/函数编写测试.
我有以下代码:
import Test.QuickCheck
import Text.Printf
main = mapM_ (\(s,a) -> printf "%-25s: " s >> a) tests
-- 1
myLast lst = last lst
prop_1a xs x = myLast (xs ++ [x]) == (x::String)
myLast' = head . reverse
prop_1b xs x = myLast' (xs ++ [x]) == (x::String)
tests = [("1a", quickCheck prop_1a)
,("1b", quickCheck prop_1b)
]
我可能会写myLast'',myLast'''等等.有没有办法可以测试所有这些方法,而无需重复代码和快速检查属性?
相关问题:现在,我正在快速检查使用字符串.有没有办法随机使用不同类型进行测试?
只需将该函数作为另一个参数进行测试:
prop_1 last xs x = last (xs ++ [x]) == (x :: Int)
tests = zipWith mkTest ['a'..] [myLast, myLast']
where mkTest letter func = ('1':[letter], quickCheck $ prop_1 func)
Run Code Online (Sandbox Code Playgroud)