Quickcheck, defining Arbitrary instances using a function whose result depends on its arguments

倖福魔咒の 提交于 2019-12-02 10:27:52

Use the forAll combinator which has the signature:

forAll :: (Show a, Testable prop) => Gen a -> (a -> prop) -> Property

A quick example:

import Test.QuickCheck

genA :: Gen Int
genA = choose (-100,100)

genB :: Gen Int
genB = choose (1,100)

prop_example :: Int -> Bool
prop_example n = n > 0

testA = quickCheck $ forAll genA prop_example
testB = quickCheck $ forAll genB prop_example

testA will fail but testB will succeed.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!