如何使用QuickCheck选择范围内的值?

时间:2018-09-08 09:18:41

标签: haskell quickcheck hspec

我使用以下代码在以下网站上创建挑战:codewars

describe "Random cases" $ do
    it "It should handle random test cases" $ 
        property $ prop_check where 
            prop_check  (Positive x) = solution x == ref_sol x
            --- ref_sol function

我想将prop_check中的x的值设置为大于4的正整数,并且最大为五位数字(不超过五位,即:最大值= 99999)。

我将如何去接近它?

1 个答案:

答案 0 :(得分:3)

您可以使用QuickCheck的choose函数在一个包含范围内选择一个值。最简单的方法可能是用prop_check表示法来写do

prop_check :: Gen Bool
prop_check = do
  x <- choose (5, 99999) :: Gen Integer
  return $ solution x == ref_sol x

此处,xInteger5之间的99999值。

根据solutionref_sol的类型,第一行可能不需要Gen Integer类型注释。不过,由于我不知道这些函数的类型,所以我不得不添加注释。