Как выбрать значение в диапазоне с помощью QuickCheck? - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть следующий код, который я использую для создания задачи на следующем сайте: 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

Я бы хотел установить значение x в prop_check равным положительному целому числу больше 4 и максимум пятизначному числу (не более пяти цифр, т.е. максимальное значение = 99999).

Как мне подойти к нему?

1 Ответ

0 голосов
/ 08 сентября 2018

Вы можете использовать функцию QuickCheck choose, чтобы выбрать значение в включенном диапазоне. Самый простой подход - написать prop_check с пометкой do:

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

Здесь x - это значение Integer между 5 и 99999.

В зависимости от типов solution и ref_sol вам может не потребоваться аннотация типа Gen Integer в первой строке. Поскольку я не знал типы этих функций, мне пришлось добавить аннотацию.

...