如何使用 QuickCheck select 范围内的值?
How to select a value in a range with QuickCheck?
我使用以下代码在以下站点上创建挑战: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 的正整数,并且最多为五位数(不超过五位数,即:max值 = 99999)。
我将如何处理它?
您可以使用 QuickCheck 的 choose
函数来 select 包含范围内的值。最简单的方法可能是用 do
符号编写 prop_check
:
prop_check :: Gen Bool
prop_check = do
x <- choose (5, 99999) :: Gen Integer
return $ solution x == ref_sol x
这里,x
是5
和99999
之间的Integer
值。
根据 solution
和 ref_sol
的类型,您可能不需要第一行的 Gen Integer
类型注释。但是,由于我不知道这些函数的类型,所以我不得不添加注释。
我使用以下代码在以下站点上创建挑战: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 的正整数,并且最多为五位数(不超过五位数,即:max值 = 99999)。
我将如何处理它?
您可以使用 QuickCheck 的 choose
函数来 select 包含范围内的值。最简单的方法可能是用 do
符号编写 prop_check
:
prop_check :: Gen Bool
prop_check = do
x <- choose (5, 99999) :: Gen Integer
return $ solution x == ref_sol x
这里,x
是5
和99999
之间的Integer
值。
根据 solution
和 ref_sol
的类型,您可能不需要第一行的 Gen Integer
类型注释。但是,由于我不知道这些函数的类型,所以我不得不添加注释。